Рабочая тетрадь(4)
.pdf
use My\Full\Classname as Another, My\Full\NSname;
$obj = new Another;
//объект класса My\Full\Classname
$a = 'Another'; $obj = new $a;
//объект класса Another
use My\Full\Classname as Another, My\Full\NSname;
$obj = new Another;
//объект класса My\Full\Classname
$obj = new \Another;
//объект класса Another
$obj = new Another\SomeClass;
//объект класса My\Full\Classname\SomeClass
$obj = new \Another\thing;
//объект класса Another\SomeClass
В пространстве имен
namespace MyProject;
echo '"', __NAMESPACE__, '"'; // "MyProject"
В глобальном пространстве
echo '"', __NAMESPACE__, '"'; // ""
В динамических конструкциях
namespace MyProject;
function get($classname) {
$a = __NAMESPACE__ . '\\' . $classname; return new $a;
}
namespace A;
use B\D, C\E as F;
foo();
Попытка вызвать "foo" объявленную в пространстве "A", далее вызов глобальной "foo"
\foo();
вызов "foo" в глобальном пространстве
my\foo();
вызов "foo" объявленной в пространстве "A\my"
F();
Попытка вызвать "F" объявленную в пространстве "A", далее вызов глобальной "F"
namespace A;
use B\D, C\E as F;
new B();
Создает объект класса "B" пространства "A", ( autoload ( "A\B" ) )
new D();
Тоже для класса "D" пространства "B", ( autoload ( "B\D" ) )
new F();
Тоже для класса "E" пространства "C", ( autoload ( "C\E" ) )
new \B();
Тоже для глобального класса "B", ( autoload ( "B" ) )
new \D();
Тоже для глобального класса "D", ( autoload ( "D" ) )
new \F();
Тоже для глобального класса "F", ( autoload ( "F" ) )
namespace A;
use B\D, C\E as F;
B\foo();
Вызов функции "foo" пространства "A\B"
B::foo();
Вызов метода "foo" класса "B" пространства "A", ( autoload ( "A\B" ))
D::foo();
Вызов метода "foo" класса "D" пространства "B", ( autoload ( "B\D" ))
\B\foo();
Вызов функции "foo" пространства "B"
\B::foo();
Вызов метода "foo" глобального класса "B", ( autoload ( "B" ))
namespace A;
use B\D, C\E as F;
A\B::foo();
Вызов метода "foo" класса "B" пространства "A\A", ( autoload ( "A\A\B" ))
\A\B::foo();
Вызов метода "foo" класса "B" пространства "A", ( autoload ( "A\B" ))
namespace\B::foo();
Вызов метода "foo" класса "B" пространства "A", ( autoload ( "A\B" ))
Объявление пространства имен
Иерархия
Правила доступа
Unqualified name
Qualified name
Fully qualified name
Глобальный доступ
Импорт и псевдонимы
Псевдоконстанта __NAMESPACE__
Игорь Борисов http://igor-borisov.ru
Тестирование кода
Модульное тестирование
PhpUnit
Утверждения
Зависимости
Источники данных
Тестирование базы данных
Тестирование наборов
