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;