Treci la conținutul principal

Funcții predefinite în PHP

PHP vine cu peste 1000 de funcții predefinite, fiecare cu o sarcină anume, și poți apela oricare dintre ele direct din scriptul tău. Pentru lista completă, vezi referința noastră PHP.


Funcții definite de utilizator în PHP

Nu ești limitat la ce oferă PHP, pentru că poți scrie și funcții proprii.

  • Gândește-te la o funcție ca la un grup de instrucțiuni pe care le poți refolosi în tot programul.
  • Încărcarea unei pagini nu o rulează de la sine.
  • Codul ei rulează doar când o apelezi.

Crearea unei funcții

Ca să îți declari propria funcție, scrie cuvântul cheie function, apoi numele pe care vrei să i-l dai.

Codul funcției se pune între o pereche de acolade: { marchează unde începe, iar } marchează unde se termină.

Notă: Numele funcțiilor trebuie să înceapă cu o literă sau cu un caracter de subliniere, iar PHP nu ține cont de majuscule și minuscule în ele.

Sfat: Alege un nume care spune ce face funcția, ca să îți fie codul mai ușor de citit.

Sintaxa unei funcții

Forma generală a unei funcții pe care o definești singur:

index.php
function functionName($parameter1, $parameter2) {
  // code to be executed
  return $value; // optional
}

Exemplu de creare a unei funcții

Iată una reală, numită myMessage(), care afișează un salut:

index.php
function myMessage() {
  echo "Hello world!";
}

Apelarea unei funcții

Pentru a apela o funcție, ai nevoie doar de numele ei și de o pereche de paranteze ().

Când este apelată, aceasta afișează „Salut lume!”:

Apelarea unei funcții

Mai întâi definește myMessage(), apoi rulează funcția apelând-o:

Prompt
Scrie un script PHP care definește o funcție numită myMessage care afișează „Salut lume!”, apoi apelează funcția.
Ieșire: script PHP

Parametrii funcțiilor în PHP

Parametrii sunt modul prin care îi dai informații unei funcții. În interiorul funcției, un parametru se comportă exact ca o variabilă.

Enumeră-i între parantezele de după numele funcției, separați prin virgulă. Nu există o limită pentru câți poți adăuga.

Funcție cu un parametru

familyName() primește un singur parametru, $fname. Fiecare apel transmite un alt prenume, pe care funcția îl combină cu același nume de familie, așa că fiecare linie afișată arată un prenume nou urmat de „Refsnes”:

Prompt
Scrie un script PHP care definește o funcție numită familyName cu un parametru pentru prenume și afișează prenumele urmat de „Refsnes.” pentru cinci nume diferite.
Ieșire: script PHP

Funcție cu doi parametri

Această variantă primește doi parametri, $fname și $year, și îi afișează pe amândoi:

Prompt
Scrie un script PHP care definește o funcție numită familyName cu doi parametri pentru prenume și anul nașterii și afișează un mesaj cu ambele valori pentru trei persoane diferite.
Ieșire: script PHP

Valoare implicită a parametrului în PHP

Un parametru poate avea o valoare de rezervă. Aici, dacă apelezi setHeight() fără argument, funcția folosește în schimb valoarea implicită:

Valoare implicită a parametrului

Primul apel transmite 350; al doilea nu transmite nimic, așa că $height ia valoarea de rezervă 50:

Prompt
Scrie un script PHP care definește o funcție numită setHeight cu o valoare implicită a parametrului de 50, apoi o apelează cu și fără argument.
Ieșire: script PHP

Funcții în PHP - Returnarea valorilor

Când o funcție ajunge la return, se oprește imediat și trimite o valoare înapoi la linia de cod care a apelat-o:

Returnarea valorilor

sum() adună cele două argumente ale sale și îi dă totalul înapoi apelantului:

Prompt
Scrie un script PHP care definește o funcție numită sum care primește două numere, returnează suma lor și o demonstrează cu trei perechi diferite.
Ieșire: script PHP

Transmiterea argumentelor prin referință

Implicit, argumentele sunt transmise prin valoare: funcția lucrează cu o copie, așa că variabila originală pe care ai transmis-o rămâne neschimbată.

Transmiterea prin referință elimină această copie, ceea ce înseamnă că tot ce face funcția cu argumentul se întâmplă și cu variabila originală. Pentru asta, pune operatorul & în fața parametrului:

Transmitere prin referință

Pentru că $value este o referință, add_five() modifică chiar $num, de la 2 la 7:

Prompt
Scrie un script PHP care definește o funcție numită add_five care primește un parametru prin referință și adaugă 5 la el, apoi afișează valoarea actualizată.
Ieșire: script PHP

Număr variabil de parametri

Uneori nu poți ști dinainte câte valori va primi o funcție. Pune operatorul ... în fața unui parametru și acesta va accepta oricâte. O astfel de funcție se numește funcție variadică.

Toate valorile colectate de acel parametru ajung sub forma unui tablou.

Există două reguli: o funcție poate avea un singur parametru de lungime variabilă și acesta trebuie să fie ultimul. Dacă îl pui în altă parte, PHP raportează o eroare.

Funcție variadică

sumMyNumbers() adună oricâte numere primește, în acest caz șase:

Prompt
Scrie un script PHP care definește o funcție variadică numită sumMyNumbers care acceptă orice număr de argumente și returnează suma lor.
Ieșire: script PHP

Argumentul variadic ca ultim argument

Un parametru obișnuit poate veni primul, atât timp cât cel variadic se află pe ultima poziție:

Prompt
Scrie un script PHP care definește o funcție numită myFamily cu un parametru fix pentru numele de familie și un parametru variadic pentru prenume, apoi afișează un salut pentru fiecare membru al familiei.
Ieșire: script PHP

Eroare când argumentul variadic nu este ultimul

Aici ... se află la primul dintre cei doi parametri, așa că acest cod eșuează cu o eroare:

Prompt
Scrie un script PHP care plasează greșit parametrul variadic înaintea unui parametru obișnuit pentru a demonstra eroarea rezultată.
Ieșire: script PHP

PHP este un limbaj slab tipizat

Poate ai observat că niciunul dintre exemplele de până acum nu i-a spus lui PHP ce tip de date conține o variabilă.

Asta pentru că PHP deduce singur tipul din valoarea variabilei. Fără tipuri impuse, poți face lucruri precum adunarea unui șir de caractere numeric, de exemplu „5”, cu un număr întreg, fără să apară vreo eroare.

Declarațiile de tip au apărut în PHP 7. Ele îți permit să precizezi ce tip de date aștepți atunci când declari o funcție. Dacă activezi și declarația strict, un tip nepotrivit oprește scriptul cu o eroare „Fatal Error”.

Activezi modul strict cu declare(strict_types=1);, care trebuie să fie chiar prima instrucțiune din fișierul PHP.

Modul strict

Declarația strict este activată aici, iar funcția primește un număr și un șir de caractere. Pentru că „5 days” nu este un număr întreg, scriptul se încheie cu o eroare:

Prompt
Scrie un script PHP cu strict_types activat care definește o funcție addNumbers cu indicații de tip int și o apelează cu un șir de caractere pentru a demonstra eroarea.
Ieșire: script PHP

Declarații de tip de retur în PHP

Declarațiile de tip funcționează și pentru instrucțiunea return.

Ca să stabilești tipul pe care îl returnează o funcție, scrie două puncte : și tipul chiar înainte de acolada de deschidere { din declarație.

Declarație de tip de retur

Această funcție declară float ca tip de retur:

Prompt
Scrie un script PHP cu strict_types activat care definește o funcție addNumbers cu parametri de tip float și o declarație de tip de retur float, apoi o apelează.
Ieșire: script PHP

Tip de retur diferit

Tipul de retur nu trebuie neapărat să coincidă cu tipurile argumentelor, atât timp cât valoarea pe care o returnezi este într-adevăr de tipul declarat. Aici, rezultatul float este convertit la int:

Prompt
Scrie un script PHP cu strict_types activat care definește o funcție addNumbers cu parametri de tip float și un tip de retur int, convertind rezultatul la int.
Ieșire: script PHP