2015-08-17 12 views
7

wiem co wykorzystanie operator robi coś jak function($x,$y) use ($z) { ...Dlaczego PHP wymaga operatora użycia dla zamknięć?

Co ja nie rozumiem, dlaczegoPHP wykorzystuje tę konstrukcję, gdy inne języki nie?

+1

możliwy duplikat [Dlaczego zmienne PHP zaczynają się od znaku $?] (Http://stackoverflow.com/questions/3073812/why-php-variables-start-with-a-sign-symbol) –

+4

Moje spontaniczne wskazówka byłaby taka, że ​​silnik zakresu PHP nie może efektywnie poradzić sobie z problemem w inny sposób i prostsze rozszerzanie zakresu zmiennych było łatwiejsze do wdrożenia. Znowu, tylko zgadnij. – deceze

+0

[Dokument RFC dotyczący zamknięć i znaków lambda] (https://wiki.php.net/rfc/closures) wydaje się zbliżać do odpowiedzi, ale wydaje się, że obejmuje on więcej niż _what_. – HPierce

Odpowiedz

0

Javascript ma raczej luźne zakresy zmiennych (nie trzeba zadeklarować zmiennych jako globalne). PHP ma mniejszą zmienną zakresu (jeśli zmienna nie jest zdefiniowana w zakresie, w którym jest używana i nie jest wprowadzana z global, to nie istnieje).

Deklaracja use mówi PHP, aby udostępnić te zmienne w ramach zamknięcia (i prawdopodobnie powie, że śmieciarz nie będzie ich sprzątał, dopóki zamknięcie nie zostanie oczyszczone).

Powiązane problemy