Zacząłem budować moją bibliotekę kodów od PHP 4. Użyłem klasy require_once
do importowania klas. Teraz w PHP 5.3 spotkałem się z definiowaniem przestrzeni nazw i ich importowania.Importowanie przestrzeni nazw w porównaniu z plikami w PHP
Chciałbym zmienić moje pliki źródłowe, aby używać importowania (instrukcja use
) zamiast używać require_once
. Czy jest to właściwa decyzja, nie jestem pewien.
Chyba byłoby łatwo. Definiowanie przestrzeni nazw na początku plików klas i wyszukiwanie w innych plikach, które ich używają (zastąpienie require_once
przez use
). Na treningu, co może pójść nie tak?
Czy nastąpi poprawa wydajności? Włączenie pliku jest oczywiste, jak PHP znajduje plik. Ale w przypadku importowania przestrzeni nazw nie jest to takie oczywiste. Czy występuje utrata wydajności podczas wyszukiwania przestrzeni nazw i indeksowania ich przez PHP?
dziękuję, nie zauważyłem automatycznego ładowania klasy. Jednak brzmi to jak zła praktyka, którą można wdrożyć tylko w języku tłumacza. Dodaje obciążenie jak przeszukiwanie całej ścieżki dla klasy i prowadzi do złej dokumentacji, że nie wiesz, który plik używa czego. – bkilinc
Nigdy nie widziałem żadnych problemów z wydajnością, ponieważ ładowanie klasy auto auf. Jeśli korzystasz z wymienionych narzędzi, możesz zobaczyć, że robią dużo, aby upewnić się, że wyszukiwanie jest szybkie. Po tym wszystkim Java robi to z powodzeniem od ponad dekady. I wreszcie: poleganie na prostych regułach włączania/ładowania klas znacznie upraszcza twój kod. – BetaRide
@bililinc: Standardy takie jak PSR-0 umożliwiają stosowanie spójnych reguł do automatycznego ładowania w aplikacji. Jeśli cała biblioteka stosuje ten sam standard, możesz użyć pojedynczego autoloadera do swojej całej aplikacji. Pozwala to na napisanie bardzo modularnego kodu OOP bez obawy o zależności, przy jednoczesnym zmniejszeniu obciążenia wydajności do absolutnego minimum. –