HTML, Excel, Word, SEOPHP êóðñ äëÿ ÷àéíèêîâ ⇒ Ôóíêöèè

PHP äëÿ "÷àéíèêîâ"

Èíñòðóìåíòû
Âûáèðàåì IDE
Âûáèðàåì Web-ñåðâåð
Âûáèðàåì ÑÓÁÄ
Ñòðóêòóðà ÿçûêà PHP
Ïåðâûé øàã
Ñèíòàêñèñ
Òèïû äàííûõ
Ïåðåìåííûå è êîíñòàíòû
Îïåðàòîðû
Âûðàæåíèÿ
Óïðàâëÿþùèå ñòðóêòóðû
Ôóíêöèè
Êëàññû
Èñêëþ÷åíèÿ
Îøèáêè
Ìàññèâû
Ãëîáàëüíûå ìàññèâû
Cookies
Ñåññèè
Çàãðóçêà ôàéëîâ
Ðàáîòà ñ ôàéëàìè
Ðàáîòà ñ ôàéëàìè íà äèñêå
Ðàáîòà ñ äàííûìè â ôàéëå
Ïðèìåð óïðàâëåíèÿ ôàéëàìè
Ðàáîòà ñ áàçàìè äàííûõ
Ïîäêëþ÷åíèå
Àíàëèç ðåçóëüòàòîâ
Âûïîëíåíèå çàïðîñîâ
Îòêëþ÷åíèå
Ïðèìåð: îòñëåæèâàíèå ïîëüçîâàòåëåé
Ðàáîòà â ñåòè
Îòïðàâêà ïî÷òû
Áåçîïàñíîñòü
HTTP-àóòåíòèôèêàöèÿ
Çàùèòà ëîãèíîì è ïàðîëåì
Àâòîìàòèçàöèÿ
Ðåãóëÿðíûå âûðàæåíèÿ â PHP
Èíòåãðàöèÿ
PHP è JavaScript



PHP: Ôóíêöèè


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷
ICQ: 438856621
email: _spin_@bk.ru

Ôóíêöèÿ - ýòî èìåíîâàííûé íàáîð âûðàæåíèé, âûïîëíÿþùèõ îïðåäåë¸ííóþ çàäà÷ó. ×àùå âñåãî ôóíêöèè èñïîëüçóþòñÿ äëÿ ìíîãîêðàòíîãî âûïîëíåíèÿ îäíîé è òîé æå ïîñëåäîâàòåëüíîñòü äåéñòâèé, íî íàä ðàçíûìè èñõîäíûìè äàííûìè è â ðàçíûõ ìåñòàõ ñêðèïòà.


Ôóíêöèè áûâàþò ïîëüçîâàòåëüñêèå è ñèñòåìíûå. Ïîëüçîâàòåëüñêèå ôóíêöèè (êàê ñëåäóåò èç íàçâàíèÿ) ïðîãðàììèñò ïèøåò ñàìîñòîÿòåëüíî. Ñèñòåìíûå ôóíêöèè âñåãäà äîñòóïíû èç ëþáîãî ìåñòà ñêðèïòà è îáúÿâëÿòü èõ íå íàäî.


Ïîëüçîâàòüñÿ ôóíêöèÿìè î÷åíü ïðîñòî. Îáúÿâëÿåòñÿ ôóíêöèÿ ñëåäóþùèì îáðàçîì:

<?php
    function mySampleFunction($parameter1, $parameter2)
    {
        // íàáîð âûðàæåíèé (òåëî ôóíêöèè)
        // return âîçâðàùàåìîå_çíà÷åíèå
    }
?>

Ëþáàÿ ôóíêöèÿ èìååò èìÿ, ñïèñîê ïàðàìåòðîâ, òåëî ôóíêöèè è âîçâðàùàåìûå äàííûå. Ïðàâèëà èìåíîâàíèÿ ôóíêöèé àíàëîãè÷íû ïðàâèëàì äÿ ïåðåìåííûõ. Ïàðàìåòðû çàïèñûâàþòñÿ â ñêîáêàõ ÷åðåç çàïÿòóþ, à åñëè ôóíêöèè íå òðåáóþòñÿ ïàðàìåòðû - äîëæíû ñòàâèòñÿ ïóñòíûå ñêîáêè "()". Ëþáàÿ ôóíêöèÿ äîëæíà âîçâðàùàòü êàêîå-ëèáî çíà÷åíèå. Åñëè â êîäå ôóíêöèè íå âñòðå÷àåòñÿ âûðàæåíèå return, òî ñ÷èòàåòñÿ, ÷òî ôóíêöèÿ âîçâðàùàåò ïóñòîå çíà÷åíèå. Íåìàëîâàæíûé ôàêò - â PHP òèï âîçâðàùàåìûõ äàííûõ çàðàíåå íå îïðåäåë¸í. Ïîýòîìó îäíà ôóíêöèÿ ìîæåò âîçâðàùàòü çíà÷åíèÿ ñ ðàçëè÷íûìè òèïàìè äàííûõ â çàâèñèìîñòè îò âõîäíûõ ïàðàìåòðîâ.

<?php
    // Ôóíêöèÿ âûâîäèò ñîîáùåíèå ïîëüçîâàòåëÿ ñ
    // ñîîòâåòñòâóþùèì îïèñàíèåì â çàâèñèìîñòè îò
    // âàæíîñòè ($severity).
    // Âîçâðàùàåò ïóñòîå çíà÷åíèå
    function showError($severity, $error)
    {
        switch($severity)
        {
            case 0:
                echo 'Ñîîáùåíèå: ';
                break;
            case 1:
                echo 'Ïðåäóïðåæäåíèå: ';
                break;
            case 2:
                echo 'Îøèáêà: ';
                break;
            case 3:
                echo 'Êðèòè÷åñêàÿ îøèáêà: ';
                break;
            default:
                echo 'Íåèçâåñòíî: ';
                break;
        }
        echo $error . "<br />\n";
    }
?>

Òåïåðü â ëþáîì ìåñòå ñêðèïòà ìîæíî íàïèñàòü

<?php
    showError(0, 'Ôóíêöèÿ ðàáîòàåò');
?>

è â áðàóçåð áóäåò âûâåäåíî

    Ñîîáùåíèå: Ôóíêöèÿ ðàáîòàåò

Ðàññìîòðèì áîëåå èíòåðåñíûé âàðèàíò ïðèìåíåíèÿ - ôóíêöèþ ïðåîáðàçîâàíèÿ äàííûõ. Íàïðèìåð, ó íàñ åñòü ñïèñîê, ñîäåðæàùèé ïîëíûå èìåíà, ôàìèëèè è îò÷åñòâà ñîòðóäíèêîâ. Íàì äëÿ ñîñòàâëåíèÿ îò÷¸òà íàäî ïðåîáðàçîâàòü ïîëíîå ÔÈÎ ê ôîðìàòó ôàìèëèè ñ èíèöèàëàìè, ò.å. ïðåîáðàçîâàòü "Èâàíîâ Àëåêñàíäð Âëàäèìèðîâè÷" â "Èâàíîâ À.Â.".

Ôóíêöèÿ äëÿ ïðåîáðàçîâàíèÿ áóäåò âûãëÿäåòü òàê:

<?php

    /*
        $f - ôàìèëèÿ
        $i - èìÿ
        $o - îò÷åñòâî
    */
    function convertFIO($f, $i, $o)
    {
        if(!isset($f) || !isset($i) || !isset($o))
            return false;
        // Ïðèñâàèâàåì ðåçóëüòàòó ôàìèëèþ
        $result = $f;
        // äîáàâëÿåì ïåðâûé ñèìâîë èìåíè è òî÷êó
        $result .= substr($i, 0, 1) . '.';
        // äîáàâëÿåì ïåðâûé ñèìâîë îò÷åñòâà è òî÷êó
        $result .= substr($o, 0, 1) . '.';
        // Ïîçâðàùàåì ðåçóëüòàò
        return $result;
    }

?>

à êîä äëÿ âûçîâà ôóíêöèè áóäåò âûãëÿäåòü òàê:

<?php

  // ñ÷èòûâàåì äàííûå èç ôàéëà
  $fulls = file('fullnames.txt');
  $shorts = array();

  // îáðàáàòûâàåì êàæäóþ ñòðîêó èñõîäíîãî ôàéëà
  foreach ($fulls as $value)
  {
      // ðàçäåëÿåì ñòðîêó íà ôàìèëè, èìÿ, îò÷åñòâî
      list($f, $i, $o) = split(' ', $value);

      // ïîëó÷àåì ñîêðàù¸ííóþ ôîðìó
      $fio = convertFIO($f, $i, $o) . "\n";
      // åñëè ôóíêöèÿ íå âåðíóëà false
      // äîáàâëÿåì ðåçóëüòàò â âûõîäíîé ìàññèâ
      if($fio)
          $shorts []= $fio;
  }

  // ñîõðàíÿåì ïîëó÷åííûå äàííûå â ôàéë
  file_put_contents('shortnames.txt', implode('', $sorts));

?>

Ïðè èñïîëüçîâàíèè ôóíêöèé íåîáõîäèìî ïîìíèòü ñëåäóþùåå:

  1.  òåëå ôóíêöèè èñïîëüçóþòñÿ êîïèè ïàðàìåòðîâ, ïîýòîìó âñå èçìåíåíèÿ ïåðåìåííûõ áóäóò ïîòåðÿíû ïðèâûõîäå èç ôóíêöèè. Ìû óæå ðàññìàòðèâàëè òàêîé ïðèìåð ïðè èçó÷åíèè îáëàñòåé âèäèìîñòè ïåðåìåííûõ.
  2. Åñëè ïàðàìåòð äîëæåí áûòü èçìåí¸í â ôóíêöèè - íåîáõîäèìî ïåðåäàâàòü åãî ïî ññûëêå, ò.å. â îïèñàíèè ôóíêöèè íàäî ïåðåä èìåíåì ïàðàìåòðà äîáàâèòü "&": function func($p1, &$p2) { }
  3. Â ñòàðûõ âåðñèÿõ PHP ôóíêöèÿ äîëæíà áûëà áûòü îáúÿâëåíà äî ïåðâîãî èñïîëüçîâàíèÿ, íî â PHP âåðñèè 4.3 è âûøå ïîðÿäîê îáúÿâëåíèÿ è èñïîëüçîâàíèÿ ôóíêöèè ìîæåò áûòü ëþáûì.

Êàê âèäèòå, èñïîëüçîâàíèå ôóíêöèé ïîçâîëÿåò ñóùåñòâåííî ñîêðàòèòü êîä è ïîâûñèòü åãî ÷èòàåìîñòü. Êðîìå òîãî, èñïîëüçîâàíèå ôóíêöèé çíà÷èòåëüíî îáëåã÷àåò îòëàäêó è ñîâåðøåíñòâîâàíèå êîäà, ò.ê. âñå íóæíûå âûðàæåíèÿ íàõîäÿòñÿ â îäíîì ìåñòå è íå íàäî ëîïàòèòü âåñü ñêðèïò â ïîèñêàõ íóæíûõ ó÷àñòêîâ. Êðîìå òîãî, óìåíèå ïîëüçîâàòüñÿ ôóíêöèÿìè î÷åíü ïðèãîäèòñÿ ïðè èçó÷åíèè ðàáîòû ñ êëàññàìè â îäíîì èç ñëåäóþùèõ óðîêîâ.



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû