Jak wspomniano w innych odpowiedziach, istnieją różnice semantyczne między tymi dwoma wariantami. Również w scenariuszu współdzielonego hostingu, w którym dostawca hostingu nie oferuje buforowania kodu Opcode PHP (APC lub równoważnika), wszystkie pliki kodu należy odczytywać i kompilować raz na żądanie. Tutaj głównym zabójcą nie jest sam czas kompilacji (~ 0.5M instrukcji PHP/s na nowoczesnym rdzeniu), ale nakład pracy związany z I/O zbierania plików PHP, jeśli nie jest wstępnie buforowany w pamięci podręcznej systemu plików (10s z I/Os/s).
W tym scenariuszu, jeśli aplikacja wymaga rdzenia kilkunastu modułów dla 90% zapytań, sensowne jest buforowanie ich w jeden plik bulkload. Jeśli ten typ rozwiązania zostanie przyjęty, umieszczenie wartownika wokół wymaganego pliku klasy spowoduje, że będzie on odporny na bomby.
Również uwaga: W przypadku korzystania z funkcji __autoload()
zrobić klasy JiT załadunek, należy pamiętać, że class_exists('fred')
będzie wywołać AutoLoad z fred
. Jeśli chcesz mieć słabą sondę, musisz zamiast tego użyć predykatu !in_array('fred', get_declared_classes())
.
Właściwie bardzo interesująca perspektywa, jestem zaskoczony, że nigdy wcześniej nie widziałem drugiego zastosowania. – esqew
Warto wspomnieć, że istnieją lepsze sposoby obecnie http://php.net/spl-autoload-register – KingCrunch
Zgaduję, że każdy plik reprezentuje jedną i tylko jedną klasę? Nie masz wielu zajęć na plik? –