Я создаю небольшой проект, в котором будет несколько классов. Каждый класс будет отвечать за работу с определенным типом данных - строками, массивами и т.д.
Вот пример такого класса
<?php
namespace MyPHPProject;
class Strings
{
function test()
{
echo 'Вызван метод test который что то делает';
}
}
Далее я использую этот класс для работы, например в файле index.php. Я подключаю свой класс.
Я также подключаю другой класс\классы написанные другими людьми.
И вот тут возникает "проблема". Так как мое имя класса Strings весьма распространено, оно совпало с именем класса у другого разработчика.
Проще говоря мы, ориентируясь на PSR, назвали пространство имен по разному, а классы одинаково.
И теперь у нас есть 2 варианта:
1) Писать пространство имен полностью, что не очень красиво AnotherPHPProject\Strings()
2) Использовать псевдонимы, что не очень понятно as AnotherStrings()
<?php
include_once __DIR__.'/Strings.php'; //
include_once __DIR__.'/AnotherPHPProject/Strings.php';
//include_once __DIR__.'/AnotherPHPProject/Strings.php' as AnotherStrings;
use MyPHPProject\Strings;
use AnotherPHPProject\Strings;
$strings1=new Strings();
$strings2=new AnotherPHPProject\Strings();
//$strings2=new AnotherStrings();
$strings1->test();
Псевдонимы - это способ избежать ситуаций совпадения имен классов. То есть неймспейс свою задачу не выполнил.
В результате мы приходим назад к варианту префикса, например названию класса AnotherStrings (Another_Strings );
Как называть классы, при использовании пространства имен?