2013-07-01 9 views
5

Według PHP documentationDlaczego Importowanie funkcji PHP w bieżącym obszarze nazw nieobsługiwany

PHP nazw obsługują trzy rodzaje aliasing lub importowania: aliasing nazwę klasy, aliasing nazwę interfejsu, a aliasing nazwę przestrzeni nazw. Zauważ, że import funkcji lub stałej nie jest obsługiwany.

Czy ktoś zna historyczny lub techniczny kontekst, dlaczego importowanie funkcji lub stałej nie jest obsługiwane?

+0

Są to w zasadzie te same ograniczenia, które ma C#. Nie można "importować" ani "aliasować" pojedynczej funkcji lub stałej w tym języku. Dlaczego chcesz? –

+0

@RobertHarvey Pisanie kodu/systemów w stylu podobnym do Pythona. –

+3

@Robert Ponieważ może być bardziej wygodny? 'bar()' zamiast 'Foo \ bar()' ... – deceze

Odpowiedz

1

Skontaktowałem Jochem Maas (Autor of this five year old RFC), a gdy był niezdecydowany punktowego jeden powód (co zrozumiałe, jako że nie jest obecnie głęboko zaangażowany w systemie przestrzeni nazw), a jego trzy czynniki były

  1. nazwa klasy kolizje były bardziej realnym problemem światowym niż nazwa funkcji kolizji

  2. funkcje i klasy PHP żyją w różnych obszarach kodu silnika, i nie było przeszkód technicznych do parsowania się, który był, który podczas use rachunku .

  3. Wystąpił pewien brak pewności/różnicy zdań na temat obsługi automatycznego mechanizmu ładującego i importowania/aliasingu określonych funkcji. (Autoloader oddzielny system działa tylko z klasami)

W końcu pragmatyzm PHP wygrał, i dlatego mamy system namespace mamy dzisiaj.

Powiązane problemy