Despre argumentele funcțiilor
Fiecare funcție poate avea, așa cum am spus deja, o listă de argumente.
Cu ajutorul acestor argumente, diferite informații sunt transferate funcției (de exemplu, valoarea numărului al cărui factorial urmează a fi calculat).
Fiecare argument este o variabilă sau o constantă.
Cu argumente, datele pot fi transmise funcției în trei moduri diferite.
Aceasta este trecerea argumentelor prin valoare (folosită în mod implicit), prin referință, și setarea valorii implicite a argumentelor. Să luăm în considerare aceste metode mai detaliat.
Atunci când un argument este transmis unei funcții prin valoare, modificarea valorii unui argument în interiorul unei funcții nu afectează valoarea sa în afara funcției. Pentru a permite unei funcții să își modifice argumentele, acestea trebuie să fie transmise prin referință.
Pentru a face acest lucru, în definiția funcției, înainte de numele argumentului, trebuie să scrieți caracterul ampersand "".
Exemplul 1. Transmiterea argumentelor prin referință (html, txt)
În funcție, puteți defini valorile implicite ale argumentului.
Valoarea implicită trebuie să fie o expresie constantă, nu o variabilă și nu o reprezentare a clasei sau o chemare la o altă funcție.
Avem o funcție care creează un mesaj de informare a cărui semnătură variază în funcție de valoarea parametrului care îi este transmis. Dacă valoarea parametrului nu este specificată, se utilizează semnătura "Comitetul de organizare".
Exemplul 2. Valorile argumentelor implicite (html, txt)
Rezultatul acestui script va fi:
Dacă funcția are mai mulți parametri, atunci argumentele pentru care sunt specificate valorile implicite trebuie să fie scrise după toate celelalte argumente din definiția funcției. În caz contrar, va apărea o eroare dacă aceste argumente sunt omise atunci când este apelată funcția.
Ca urmare a scenariului, vom obține următoarele
Dacă scriem astfel:
Că, în consecință, vom primi:
Listele argumentelor cu lungime variabilă
În PHP4, puteți crea funcții cu un număr variabil de argumente.
Adică, noi creăm o funcție fără să știm în avans, cu câte argumente va provoca.
Pentru a scrie o astfel de funcție, nu este necesară nicio sintaxă specială.
Totul se face cu funcțiile încorporate func_num_args (), func_get_arg (), func_get_args ().
Funcția func_num_args () returnează numărul de argumente transmise funcției curente. Această funcție poate fi utilizată numai în cadrul definiției unei funcții definite de utilizator.
Dacă apare în afara funcției, interpretul va emite un avertisment.
Exemplul 1. Folosind func_num_args () (html, txt)
Funcția func_get_arg (numărul argumentului întreg) returnează un argument din lista de argumente transmise funcției, numărul ordinal al căruia este specificat de numărul argumentului. Argumentele funcției sunt considerate începând de la zero.
Ca func_num_args (), această funcție poate fi utilizată numai în interiorul definiției unei funcții.
Numărul argumentului nu poate depăși numărul de argumente transmise funcției. În caz contrar, va fi generat un avertisment și func_get_arg () va reveni Fals.
Să creăm o funcție pentru a verifica tipul de date al argumentelor sale. Considerăm că testul a avut succes dacă primul argument al funcției este un întreg, al doilea este un șir.
Exemplul 2. Funcția pentru verificarea tipului de date, a argumentelor sale (html, txt)
Rezultatul lucrării va fi următorul.
Funcția func_get_args () returnează o matrice constând dintr-o listă de argumente transmise funcției.
Fiecare element al matricei corespunde argumentului transmis funcției.
Dacă funcția este utilizată în afara definiției unei funcții definite de utilizator, este generat un avertisment.
Rescriem exemplul anterior utilizând această funcție. Vom verifica dacă un argument întreg întreg trecut la o funcție este un întreg:
După cum puteți vedea, combinațiile func funcții func_num_args (), func_get_arg () și func_get_args () sunt utilizate astfel încât funcțiile pot avea o listă variabilă de argumente.
Aceste funcții au fost adăugate numai în PHP 4. În PHP3, pentru a realiza acest efect, puteți utiliza un argument ca argument al funcției.
De exemplu, aici este posibil să scrieți un script care verifică dacă fiecare parametru impar al funcției este un întreg: