Perun пишет:Начал читать про пространства имен относительно классов, запутался еще больше... Вы умеете работать с пользовательскими функциями? Если да, то можно провести аналогию между областью видимости локальных переменных внутри пользовательских функций, и областью видимости классов в пространствах имён.
В мануале написано довольно понятное разъяснение, в котором неймспейсы сравниваются с файловой системой любого компьютера: внутри одной и той же папки НЕ могут одновременно находиться два файла с одинаковым названием. Точно так же, внутри одного php-файла НЕ могут одновременно находиться два класса (или функции) с одинаковым названием. Но если описать класс (или функцию) в пространстве имён, то можно поместить в один php-файл два (и более) класса (или функции) с одинаковым именем.
Ниже я набросал код, который демонстрирует описанное поведение. Следует понимать, что это демо пример - в реальных проектах в одном php-файле должно находиться только одно пространство имён: Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP namespace Perun\Code; class Project { public function __toString() { return __CLASS__; } } $ob = new \Perun\Code\Project; echo $ob ."\n"; namespace Builder\Code; class Project { public function __toString() { return __CLASS__; } } $ob = new \Builder\Code\Project; echo $ob;
|