namespace
Когда количество файлов вашего PHP проекта увеличивается, увеличивается вероятность того, что у вас может быть два разные класса или функции, названные одинаково. Особенно, если если вы используете сторонние библиотеки.
Задав в начале файла namespace Tester;
namespace позволяет решить эту проблему совпадения имен.
Директива namespace должна быть в самом начале файла.
До тега
Имя класса PHP всегда ищет только в текущем пространстве имён.
Константы и функции PHP будет искать в начале в текущем пространстве имен, если не найдёт, то в глобальном.
На переменные namespace не распространяется, а жаль.
Для примера создадим два файла, в b.php задаём namespace область и дальнейшее описание классов будет принадлежать только к этой области.
Файл b.php
<?php namespace Tester; $s='Переменная из namespace Tester'; const TEST_CONST = 'Константа из namespace Tester'; class Test { function __construct() { echo __METHOD__.'<br>'; } public static function staticFunc() { echo __METHOD__.'<br>'; } } Файл a.php <?php namespace Tester; echo 'namespace: ', __NAMESPACE__, '<br>'; // выводит namespace: "Tester" require 'b.php'; echo $s.'<br>'; echo TEST_CONST.'<br>'; Test::staticFunc(); $v = new Test();