Funcția de apel invers în PHP

1. Situația problemei

Deci, să ia în considerare exemplul următor. Există trei fișiere text, fiecare dintre care conține un anumit set de numere. Iată conținutul unui fișier:

clasă specială, următorul conținut este prevăzut pentru citirea acestor fișiere:

Această clasă este destul de simplu și conține doar o get_numbers metoda (). Această metodă are ca argument o matrice $ fișiere, care conține fișierele de a citi numele. După verificarea disponibilității fișierelor de date, vom face să le citesc, iar conținutul sunt înregistrate în $ datele de pre-variabilă, și apoi în numerele de proprietate $. Să ne uităm în browser-ul va afișa acest cod:

Funcția de apel invers în PHP

Clasa își execută sarcina, dar ce se întâmplă dacă spunem, ceva timp va trebui să fie un anumit mod de a prelucra datele obținute din fișierele. De exemplu, înmulțită cu numărul sau adăugați o linie, etc. Astfel, este necesar să se rescrie codul pentru această metodă, deoarece nu este universal și nu doar o singură sarcină. Prin urmare, în această lecție vom adăuga versatilitatea acestei clase, folosind funcția de apel invers.

2. Clasa Modernizarea

Primul pas este de a determina ceea ce este o funcție de apel invers. Funcția de apel invers (callback) - prevede transferul anumitor cod executabil ca unul dintre parametrii la alt cod. Adică, funcția de apel invers permite o anumită metodă de a executa cod care este specificat în argumentele sale. Funcția de apel invers este - de regulă funcțiile obișnuite, care sunt în mod direct sau atunci când nu sunt numite.

Funcția de apel direct: Funcția (). Reapelări sunt de obicei transmise ca parametru la o altă funcție. Si in timp ce trec un pointer (link) la funcția. Acum să modificați get_numbers cod metoda (), după cum urmează:

Primul lucru adăugată - este al doilea argument opțional $ callback = FALSE. Acesta este un pointer la un link de apel invers. Care implicit este FALSE. Și în al doilea rând, a adăugat cec în cazul în care variabila $ apel invers furnizează un pointer la funcția de apel invers. Deci, aveți nevoie pentru a apela această funcție. Pentru a face acest lucru, verificați - Este posibil pentru a apela un indicator de funcție este stocat în $ apel invers variabilă. Pentru această funcție scop is_callable ($ apel invers), care ia ca argument un pointer la o funcție. Se întoarce TRUE, în cazul în care funcția este într-adevăr, puteți apela pentru executare.

Pentru a apela funcția de apel invers standard utilizat: call_user_func ($ apel invers, fișier $, $ date), care este primul parametru are un pointer la o funcție și ulterioare - argumente care trebuie să fie transferate la un apel de funcție.

Astfel, vom pune în crearea unei metode - un fel de universalitate. La momentul potrivit, dacă avem nevoie să afecteze într-un fel datele returnate. Este suficient pentru a crea o funcție callback și trece un pointer ca parametru get_numbers () metoda.

3. Creați funcții de apel invers

Există trei tipuri principale de funcții de apel invers:

1. Funcția clasică - ca o funcție de apel invers. Să creeze o funcție. Nu uita despre parametrii ce ar trebui să ia:

2. Metoda de clasă statică - ca funcție de apel invers. Să creeze o clasă și adăugați o metodă:

3. Metoda uzuală a unei clase - ca o funcție de apel invers. Să adăugăm această metodă la clasa Clasa_Mea creat anterior:

Acum, să numim get_numbers () metoda și a vedea cum să treacă o funcție parametru de apel invers al fiecărui tip. Deci, ca de obicei, vom apela metoda după cum urmează:

Variabila $ callback va stoca un pointer la funcția de apel invers. Acest lucru înseamnă că, pentru fiecare tip de apel, este suficient pentru a defini această variabilă înainte de codul de apel. Acum, pentru primul tip de funcții de apel invers:

Și, în consecință, pe ecran, vom vedea următoarele:

Funcția de apel invers în PHP

Pentru al doilea tip:

Deoarece al doilea tip - aceasta este o clasă statică, astfel încât callback în variabila $, aveți nevoie pentru a salva matrice. Prima este o celulă, clasa descrisă în care această metodă statică. În a doua celulă indică faptul că numele metodei statice. Pe ecran vom vedea următoarele:

Funcția de apel invers în PHP

Pentru al treilea tip:

Deoarece al doilea tip - aceasta este metoda uzuală, atunci trebuie să specificați, de asemenea, toate variabila matrice $ apel invers, în care prima celulă pentru a menține obiectul de clasă, în cazul în care este descrisă metoda dorită. Și specificați numele metodei în a doua celulă. Pe ecran vom vedea următoarele:

Funcția de apel invers în PHP

După cum puteți vedea, atunci când apelați funcțiile de apel invers vom schimba get_numbers metoda de acțiune (). Și la sfârșitul acestei lecții, aș dori să arate mai mult de două moduri de a crea funcții de apel invers:

1. Crearea unei funcții anonime și salvarea unui pointer la acesta într-o variabilă:

În acest caz, vom vedea în următorul ecran:

Funcția de apel invers în PHP

2. Crearea unei funcții folosind create_function () funcție (primul parametru este un șir de argumente a trecut, al doilea - linie de cod funcția):

Pe ecran vom vedea următoarele:

Funcția de apel invers în PHP

Cum vedeți utilizarea acestor funcții, adaugă versatilitate și flexibilitate pentru a crea script-uri. Prin urmare, în unele cazuri, acestea sunt foarte utile și ar trebui să fie utilizate.

La această lecție este finalizată. Toate cele mai bune și o codificare de succes.

Cele mai multe știri IT si dezvoltare web pe canalul nostru-Telegram

articole similare