Przestrzenie nazw są dostępne dopiero od 5,3
Przynajmniej w przypadku klas, można użyć funkcji class_exists
aby sprawdzić, czy klasa została już zdefiniowana z niczym nazwa w globalnej przestrzeni nazw. W połączeniu z funkcją __autoload()
można utworzyć jeden uniwersalny alias i sprawdzić system dla obu klas, których nazwy zostały nazwane oryginalną nazwą, a także z nazwą z dodanym dodatkowym identyfikatorem. Użyję "ns" jako przykładu.
function __autoload($class){
try{
require_once('ns'.$class.'.php');
}catch(Exception $e){
echo 'The class is unavailable in pseudo-namespace as well as global';
}
}
Po prostu upewnij się, że wymagane są punkty ścieżki do miejsca, w którym przechowujesz swoje modele. Można również użyć innego folderu zamiast aliasu.
W ten sposób wszystkie zduplikowane klasy mogą być umieszczane w plikach oddzielnych od głównego wykonania, które są uwzględniane tylko wtedy, gdy nie istnieją w globalnym. Chociaż nie rozwiązuje to problemu z koniecznością fizycznej zmiany nazw klas, to pozwoli ci umieścić swoje definicje w różnych katalogach dla celów związanych z wersjami itp.
Nie. Przeczytaj tę uroczą instrukcję: http://php.net/manual/en/language.namespaces.php –
Chociaż nie jest obsługiwana, możesz ją oczywiście usunąć. Tak się składa, że pojawiła się niedawno: http://stackoverflow.com/questions/1836387/strategy-for-developing-namespaced-and-non-namespaced-versions-of-same-php-code/3661724#3661724 - Nie jestem pewien, czy o to prosiłeś, czy tak naprawdę było o podświetlaniu składni? – mario
Preprocesy PHP sor brzmi dobrze. Ale używam również nazw zmiennych, które nie są przetwarzane z tym skryptem. – kravemir