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();