Może to dziwne pytanie, ale nie mogę się dogadać co dzieje się wewnętrznie w php, gdy piszesz:PHP oświadczenie zastosowanie do nazw
use garcha\path\class;
Nie pytam o celu nazw, ale o samo stwierdzenie, że nawet on nie przyznaje żadnej pamięci, to znaczy, jeśli nawet dać alias dla pewnej klasy:
use garcha\path\class as withNewName;
Gdzie jest przechowywane? Albo jak pamięta nazwy? Czy dzieje się to tylko podczas kompilacji? i nie uruchamiać czasu? coś w rodzaju opisywania funkcji.
Jeśli jesteś zaznajomiony z C, spojrzeć na realizację: http://lxr.php.net /xref/PHP_TRUNK/Zend/zend_compile.c#zend_compile_use. Zapamiętuje nazwy, przechowując je w hashtable (patrz także zend_get_import_ht). I tak, rozdzielczość aliasów jest w pełni kompilowana. Maszyna wirtualna nie wie o aliasach nazw. – NikiC
można zobaczyć na własne oczy, że jest kompilacji poprzez prosty skrypt jak 'namespace testowej { klasy MojaKlasa {} } nazw { użycie Test \ MojaKlasa; } 'a następnie użyj' phpdbg' do zrzutu kodów opcodes. Dostaniesz tylko ZEND_NOP, ponieważ nie ma tam kodu runtime. – Leigh
lxr jest wyłączony (maj 2017). Użyj github https://github.com/php/php-src/blob/master/Zend/zend_compile.c#L6408 lub zakręć kontener dokera https://hub.docker.com/r/itszero/opengrok/ – peter