Как использовать пространства имен в PHP
Ясность кода должна быть не просто целью, она должна стать стандартом, и чтобы помочь в этом, мы собираемся изучить пространства имен PHP. Пространства имен подобны молчаливым библиотекарям PHP, которые всегда следят за тем, чтобы все было на своих местах, по крайней мере, для разработчика, работающего над проектом. Если вы хотите сохранить свой код чистым и бесконфликтным, понимание пространств имен является ключевым фактором.
Что такое Пространства имен?
Пространства имен используются для организации классов; они решают две простые проблемы: первая проблема заключается в том, что они позволяют улучшить организацию, группируя классы, которые работают вместе в одном месте, и, во-вторых, они позволяют использовать одно и то же имя для нескольких классов.
По сути, вы группируете классы, которые имеют какое-то отношение друг к другу. В разных пространствах имен могут быть классы с одинаковыми именами (и их методы могут даже отличаться).
Например, у вас может быть два пространства имен с именами mathematics и furniture, и оба они имеют класс table. Однако эти два класса table описывают две совершенно разные вещи (таблица в математике сильно отличается от таблицы в мебельном магазине).
Синтаксис
namespace CSS;
Мы объявляем пространство имен с помощью приведенного выше синтаксиса, простым добавлением ключевого слова namespace перед именем.
Ниже приведен пример кода, используемого для объявления пространства имен.
<?php
namespace CSS;
echo "Привет мир!";
...
?>
Таким образом, любые классы, объявленные в пространстве имен CSS, будут принадлежать пространству имен CSS. И в приведенном выше примере показано, как мы можем получить к ним доступ.
Вложенные пространства имен
Рассмотрим следующий пример
namespace Code\CSS;
Данный пример демонстрирует, что пространство имен CSS находится в другом пространстве имен Code.
Использование псевдонимов
Иногда названия классов получаются довольно длинными. Для нашего удобства, есть возможность использовать псевдоним для класса:
require_once("app/Services/SomeDataProviderAuthService.php")
use Code\Services\SomeDataProviderAuthService as SomeDPAuth;
// Если бы мы не использовали псевдоним
// нам пришлось бы сделать:
$conn = new SomeDataProviderAuthService;
// но благодаря псевдонимам мы можем использовать:
$conn = new SomeDPAuth;
Следующее особенно полезно, когда (по какой-то неизвестной причине) наш проект содержит 2 класса с одинаковыми именами (в разных пространствах имен), и нам нужно использовать их оба в коде.
require_once("app/FirstIntegration/Database/Connection.php");
require_once("app/SecondIntegration/Database/Connection.php");
// Если бы мы оставили все как показано ниже,
// то получили бы сообщение об ошибке:
// "Cannot use 'Connection' because the name is already in use"
use Code\FirstIntegration\Database\Connection;
use Code\SecondIntegration\Database\Connection;
// Вот почему псевдонимы так удобны:
use Code\FirstIntegration\Database\Connection as FIDbConn;
use Code\SecondIntegration\Database\Connection as SIDbConn;
$firstDbConn = new FIDbConn();
$secondDbDonn = new SIDbConn();
Комментарии
Для того чтобы оставить свое мнение, необходимо зарегистрироваться на сайте