Как называть классы, при использовании пространства имен?

Рейтинг: 1Ответов: 1Опубликовано: 20.02.2023

Я создаю проект, в котором будет несколько классов. Каждый класс будет отвечать за работу с определенным типом данных - строками, массивами и т.д.

Я создал класс Strings.php

<?php

namespace MyPHPProject;

class Strings
{

function test()
{
echo 'пространство MyPHPProject класс Strings метод test';
}

}

Далее я использую его в файле index.php

<?php

include_once __DIR__.'/Strings.php';

use MyPHPProject\Strings;

$strings=new Strings();
//$strings=new MyPHPProject\Strings(); // Ещё один вариант использования

$strings->test();

Имя Strings распространено и часто встречается. И если будет подключено какое либо другое пространство имен содержащее класс с таким же именем, то возникнет конфликт. Конфликт при создании экземпляра класса, без явного указания пространства имен. Конструкция use становится бесполезна.

Придется вместо use писать не очень красивый вариант в виде MyPHPProject\Strings.

Как называть классы, при использовании пространства имен? До пространства имен были префиксы.

Теперь, снова придется вернуться к префиксам в виде MyPHPStrings, но уже чтобы избежать кода в виде MyPHPProject\Strings()?

Ответы

▲ 2

Имя Strings распространено и часто встречается. И если будет подключено какое либо другое пространство имен содержащее класс с таким же именем, то возникнет конфликт.

Используем псевдонимы https://www.php.net/manual/ru/language.namespaces.importing.php и ноль проблем

use My\Full\Classname as Another;

$test = new Another();