Funcţii anonime în PHP
12 giugno 2008, 9:09 Open Source , PHP , Tips & Tricks 12 iunie 2008, 09:09
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.















12 iunie 2008 la 09:56
Buna ziua Ivan, am ajutat un prieten cu grad ei onoruri în ştiinţele comunicării, în cazul în care unul dintre capitole este incomplet teorema de Godel, care am înţeles că în centrul de calcul lambda. Eu trebuie să facă ceva, care este un exemplu de teorema lui Godel, ma puteti ajuta? Limbaj de programare Qualsiai merge bine, PHP, care este destul de simplu de a explica supraveghetorul. Mulţumiri
12 iunie 2008 la 15:31
Salut, nu au semnat şi adresa dvs. de e-mail nu va înţelege mai mult despre plecarea numele tau ...
Este ciudat că mi faci această întrebare, pentru că una din obsesiile mele din trecut, de către cercetători în discipline derivate din semiotica sunt exact teoreme (pentru a fi precis: sunt 2), Kurt Gödel incomplete.
Eu sunt ocupat, dar nu prea mult timp în urmă pentru a putea să mă ajute să întreb acum, sunt acum aproape 10 ani acum. Dar cel puţin eu pot ajuta să găsiţi o idee pe care o reprezintă varianta cel mai putin popular (eu cred că e mai mult decat suficient pentru o teză) sau conţinute în cartea Hofstadter voluminos şi celebrul "Gödel, Escher, Bach: un etern panglica aurie ". Ai citit-o?
De ce aţi adăugat un comentariu şi nu au scris în mod direct (probabil de la forma "Contact")?
Aspect de ştiri