Continuăm să studiem PHP și astăzi să vorbim despre funcții în PHP. PHP în sine are multe funcții încorporate. Sunt mulți, aproximativ câteva mii. Cu ajutorul lor, aproape 99% din toate sarcinile sunt rezolvate. Cu toate acestea, pentru a înțelege cum sunt construite funcțiile PHP și pentru a înțelege esența lor în general, trebuie să învățăm cum să ne scriem propriile funcții. În general, puteți să vă scrieți propriile funcții nu doar pentru a înțelege modul în care funcționează funcțiile încorporate, ci și pentru a vă asigura că codul pe care îl scriem poate fi executat de mai multe ori. Ce vreau sa spun?
Să presupunem că avem cel mai simplu și cel mai comun cod care adaugă numere:
Aici totul este foarte simplu, acest cod va funcționa în programul în care îl scriem. Cu toate acestea, există situații și destul de des avem nevoie ca acest cod să funcționeze de mai multe ori. De exemplu, avem un program care conține 100 de linii de cod. Vreau ca codul care însumează numerele să funcționeze de trei ori - la începutul programului, la mijloc și la final. Totul pare să fie simplu - scriu acest cod de trei ori în trei părți diferite ale programului. Și dacă acest cod, care adaugă două numere, nu va consta din trei linii, ci din 33 și trebuie să adaug un număr nou de fiecare dată. Se pare că programul meu crește în mărime, plus am duplicat același cod, dar nu mi-ar plăcea și nici nu.
Prin urmare, regula de programare spune: dacă o secțiune de cod din program este repetată de mai multe ori, trebuie să scrieți o funcție pentru aceasta.
Asta este, o funcție în PHP este o bucată de cod care este executată doar când este întrebată.
Funcția are o descriere și un apel. Cum se descrie funcția?
Este descrisă foarte simplu: cuvântul cheie funcție, apoi numele funcției (numele funcțiilor sunt insensibile la litere mari), apoi cotierele rotunde și cotite.
Iată funcția care rezumă numerele:
Se pune întrebarea: dacă merită să se oprească funcția de trei ori, dacă ați putea adăuga doar două numere în locuri diferite de mai multe ori? A meritat! Uite, chiar și acum, dacă vreau să schimb numerele pliabile, trebuie să fac asta doar într-un singur loc, în funcția în sine, mai degrabă decât să urc codul și să îl schimb în trei locuri și în locuri diferite.
În PHP, nu există conceptul de supraîncărcare a unei funcții. Adică, nu putem declara o funcție de două ori:
Amintiți-vă, am spus la început că PHP are multe funcții. Deci, atunci când vă creați funcția în PHP, nu putem să-i dăm același nume pe care PHP are funcțiile încorporate.
Pentru aceasta, există o verificare a prezenței funcțiilor.
Cu funcția function_exists (nume_funcție), putem verifica dacă există o funcție pe care o scriem sau nu. Dacă există o astfel de funcție, ea returnează adevărat, dacă nu există, ea returnează false:
Desigur, adăugarea a două numere este prea simplă și banală. La noi toți, așa-cum-ca-un limbaj dinamic. Deoarece funcția din PHP are paranteze, înseamnă că sunt acolo pentru ce. Cu ajutorul acestor paranteze putem transmite anumiți parametri funcțiilor și, dacă există multe, atunci le trimiteți prin virgulă:
Pot trece parametrii ca variabile:
Dacă specificăm că funcția trebuie să accepte parametrii și ei înșiși nu au fost transmiși atunci când a fost apelată funcția, atunci vom primi o eroare sub forma unui avertisment, dar codul va continua să fie executat.
Să ne uităm la un alt exemplu pentru o schimbare și voi arăta că parametrii pe care îi puteți adăuga la funcția PHP nu sunt doar stivuite.
Exemplu: Vreau să folosesc funcția pentru a scoate expresii Bună ziua Mike, Hello John, Hello Zack:
Avem trei felicitări cu diferite rubrici de la h1 la h3.
Un pic mai devreme am scris că dacă declarați o funcție cu parametri și, atunci când o numiți, nu specificați acești parametri, atunci va exista o eroare. Deci, pentru a nu exista erori, nu puteți seta doar parametrii funcției, ci parametrii cu valori implicite.
În acest exemplu, am declarat o funcție în PHP cu parametrii impliciți, adică dacă apel acum la această funcție, o pot numi fără parametri, atunci în acest caz voi fi înlocuit cu parametrii impliciți.
Fiți atenți la o subtilitate, acest lucru este foarte important:
Dacă declarăm o funcție cu parametrii impliciți, trebuie mai întâi să fie utilizați parametrii necesari și apoi să nu fie obligatoriu.
Următorul cod nu va fi corect:
Aici, când numesc o funcție, nu pot sări peste primul parametru și nu avem nevoie de el, adică nu pot să scriu o funcție de apel așa cum este:
Prin urmare, aveți grijă - la început sunt parametri obligatorii, dar numai atunci nu sunt obligatorii.
Există un alt mod de a apela o funcție în PHP - printr-o variabilă. Se folosește mult mai rar, oricum o puteți întâlni de la cineva din cod și nu te face să te încurci, îți arăt cum arată:
Când PHP întâlnește o variabilă și o paranteză, știe că trebuie să numească o funcție al cărei nume se află în acea variabilă.
Amintiți-vă în articol în timp ce în PHP, am făcut masa de multiplicare cu tine. Să încercăm acum codul tabelului de multiplicare ca o funcție PHP:
Să înțelegem mai departe. Uitați-vă la acest cod și spuneți ce va fi afișat pe linia numărul 9:
Răspunsul corect este Mike. De ce? Da, deoarece variabila care se află în interiorul corpului funcției și variabila care este în afara acesteia sunt variabile diferite.
În programare există un "scop" - global și local. Local - aceasta este variabila care este în interiorul funcției PHP și nu este disponibilă din exterior.
Putem declara o variabilă în interiorul unei funcții, dar nu o putem numi sau o putem accesa dintr-o funcție.
Domeniul de aplicare global este acele variabile care sunt declarate în afara funcțiilor PHP și sunt accesibile din orice parte a codului.
Dar problema este că avem încă nevoie să abordăm cumva variabila locală din interiorul funcției. Ce ar trebui să fac? Există o opțiune:
Declarați o variabilă în interiorul unei funcții folosind cuvântul cheie global.
Cu toate acestea, globalizarea are unele dezavantaje. Când declarăm o variabilă cu ajutorul globalelor, suntem privați de această localitate. Apoi, funcțiile pot fi destul de lungi, deși acest lucru nu este corect. Dacă funcționați afară din ecran, atunci există motive să credeți că ceva nu este în regulă. Ei bine, bine, dar dacă aveți o astfel de funcție, anunțând prima variabilă la nivel mondial, apoi la partea de jos a acestei funcții, noi nu știm dacă această variabilă este globală sau nu, ei bine, am uitat sau cineva a lovit ușor altcineva funcția și nu a văzut sau, de asemenea, ați uitat, că la început a fost declarată globală. Din această cauză pot apărea probleme. Prin urmare, este posibil, de exemplu, declara variabile globale, în cazul în care acestea sunt utilizate într-o funcție, mai degrabă decât la început, adică, eu, unul decis în mijlocul funcțiilor de a lucra cu variabile globale și eu imediat în mijlocul declara sale la nivel mondial.
Să vorbim acum despre ce! Atunci când creăm funcții, ei trebuie să returneze ceva. De exemplu, am creat o anumită funcție, a funcționat și trebuie să returneze rezultatul muncii sale. Până acum, am scris în corpul funcției, de exemplu, rezultatele unui rezultat. Cu toate acestea, poate fi necesar ca funcția să returneze rezultatul în sine și apoi am decis ce să facem cu aceasta. Vedeți ce vreau să spun: creăm o funcție, de exemplu, getNumberSum ($ numb1, $ numb2), care efectuează operații aritmetice cu numere, de exemplu, le adaugă. În cadrul acestei funcții, efectuăm calcule. Dar nu știu dacă vreau să trimit rezultatul calculului direct la browser sau să folosesc acest rezultat în altă parte.
În acest caz, pot să revin rezultatul, iar apoi trebuie să mă gândesc ce să fac cu el. Se returnează folosind instruciunea return:
Acum voi asocia rezultatul funcției lucrate la variabila $ res = getNumberSum (2,3) și apoi ieșiți această variabilă:
Pot să fac chiar mai ușor: doar ieșiți în browser ceea ce mi-a revenit funcția:
Uite, dacă am încă un cod după întoarcere, acesta nu va fi executat niciodată, deoarece returnul funcționează și ca pauză:
Amintiți-vă, am scris codul de meniu în articolul FOREACH în PHP. Să descriem acum acest meniu folosind funcția PHP.
Funcția noastră va avea în plus față de opțiunea de meniu ($ menu) un alt parametru numit $ vertical, în mod implicit va fi adevărat, adică, meniul va fi redat fie vertical (adevărat) sau orizontal (fals).
Iată soluția problemei noastre:
Evgeny Vladimirovich Andreev
ȘTIRI ALE FORUMULUI
Cavalerii teoriei eterului