Functie in functie php

lucram azi la un client si am dat de o ciudatenie, are o functie definita si in ea alte functii definite…
nici nu stiam ca merge asa, voi ce ziceti e o practica comuna?
(ignorati programarea procedurala, se pare ca acolo si-au bagat degetele cel putin 10 incepatori, fiecare cu stilul lui)

1 Like

Any valid PHP code may appear inside a function, even other functions and class definitions.

un pic creepy, dar na. oricum, din ce stiu, tot global sunt definite

2 Likes

nu am folosit pana acum definirea unei functii in alta functie (nu mi-a fost util niciodata), daia intrebam, in ce situatii ai avea nevoie de asa imbarligatura?

1 Like

nu-mi dau seama, daca ai functia atat de mare incat iti trebuie sa definesti functii in ea, faci ceva gresit.

1 Like

Aș zice că primul care a scris în stilul ăsta a venit direct din lumea javascript și că spera la un soi de scoping.

3 Likes

Am întâlnit și eu ciudățenia asta, cred că nu prea există situații în care să fii obligat să scrii cod așa greu de citit. Evitați-o liniștiți. :slight_smile:

Pentru cazul în care ajunge cineva pe aici și nu știe cum funcționează și nici n-are timp să caute, las citatul ăsta:

“When you define a function within another function it does not exist until the parent function is executed. Once the parent function has been executed, the nested function is defined and as with any function, accessible from anywhere within the current document. If you have nested functions in your code, you can only execute the outer function once. Repeated calls will try to redeclare the inner functions, which will generate an error.”

2 Likes

Hmmda. Am vazut is eu din astea de cateva ori in urma cu vreo 10 ani. Dupa ce PHP a inceput sa suporte 100% programarea orientata pe obiecte, astfel de cod procedural nu prea isi mai avea locul.

Cat despre functii in general, am intalnit vreo 10 cazuri pana acum cand am folosit functii ca si “first class citizens” in cod OO. Cu alte cuvinte am definit o functie ce implementa un algoritm, functie ce am pasat ulterior ca parametru la alte functii sau le-am folosit ca si callback din mai multe parti. In cateva cazuri asta te ajuta sa reduci duplicarea de cod … dar bat campii aici. Asta nu e functie in functie. Doar mi-am adus aminte de ele dupa ce am vazut codul ala de mai sus si m-am gandit ca poate cineva e curos sa stie ca si programarea functionala este destul de bine suportata de PHP. Desigur, doar la un nivel complementar celui OO, nu v-as recomanda sa scrieti o aplicatie cu PF in PHP.

3 Likes