PHP este un limbaj de programare bun, dacă ne judecăm cu parametri destul de empirice de difuzare şi de cantitatea de funcţia care se integrează.
De multe ori se dovedeşte a fi surprinzător de scenarii flexibile de programare pentru abordarea mult mai complex decât pur şi simplu integrarea scripturilor într-o pagină Web.
În timpul unei recente schimb de opinii cu un fond de matematician Open Source a prezentat problema de a crea funcţii anonime, şi - aici e aici - nu în interiorul unei clase PHP. Sar peste frazeologie teoretică pe care am avut de a SIP pe lambda calcul şi funcţii anonime, şi voi prezenta aici doar un pasaj din definiţia dată de Wikipedia . Citez:
Calculul lambda este un sistem de rescriere definit în mod oficial de către matematicianul Alonzo Biserica . Acesta a fost dezvoltat pentru a analiza formal definiţiile funcţiilor , aplicaţiilor lor şi este, de asemenea, un instrument interesant pentru studierea fenomenelor de recursivitate . Ca sistemul de rescriere, oferă o descriere a condiţiilor bine formate, care sunt secvenţele de simboluri recunoscute de sistem şi să poată fi rescris de la ea. Calculul lambda, de fapt, defineşte un set de reguli de rescriere care determină exact modul în care aceşti termeni pot fi rescrise. În acest fel, procesul de rescriere devine o adevărată calcul .
Şi totuşi (disponibil numai în engleză):
Funcţii anonime pot fi utilizate pentru a conţine funcţionalitate care nu trebuie să fie numit şi, eventual, pe termen scurt de utilizare. Câteva exemple notabile includ închiderea şi finisaj. [...]
Închiderile sunt funcţii evaluate într-un mediu care conţine variabile legate. Următorul exemplu se leagă de variabila "prag", într-o funcţie de anonim care compară contribuţia la pragul. [...]
Finisaj este o funcţie de transformare de la intrari multiple la mai puţine intrări (în acest caz, diviziune întreg).
Deşi nu există oficial în PHP o metoda reala de a ocupa funcţii anonime, puteţi obţine cu uşurinţă ceva similar în cel puţin două moduri:
-
de asteptare o variabilă cu numele de o funcţie:
$foo = "phpinfo";
$foo(); -
iniţializarea o variabilă cu create_function ``:
$sum = create_function('$a, $b','return $a + $b;');
echo $sum(1,2);
În primul caz, vom crea doar un link la funcţia. În al doilea caz, vom atribui funcţia de variabila la fel cum l-am crea. Văzând se crede: este o neobişnuită şi oarecum distractiv de PHP, dar descurajează puternic cineva să adopte o soluţie similară în medii de producţie în cazul în care nu doriţi să piardă din vedere practic şi uşurinţa de a citi codul.







