Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рабочая тетрадь(4)

.pdf
Скачиваний:
36
Добавлен:
10.02.2016
Размер:
7 Мб
Скачать
☆

namespace A\B\C;

class Exception extends \Exception {}

$a = new Exception('hi');

// $a - объект класса A\B\C\Exception

$b = new \Exception('hi');

// $b - объект класса Exception

$c = new ArrayObject; /* fatal error,

класс A\B\C\ArrayObject не найден */

Qualified name

global.php (include 'project.php')

project.php (include 'subproject.php')

subproject.php

▪namespace Project\Sub

class Connection { /* ... */ }

В пространстве Project (project.php)

▪$obj = new Sub\Connection();

В глобальном пространстве (global.php)

▪$obj = new Sub\Connection /* ERROR */

▪$obj = new Project\Sub\Connection();

File-1.php

namespace Foo\Bar\subnamespace; const FOO = 1;

function foo() {}

class foo { static function baz() {} }

File-2.php

namespace Foo\Bar; include 'file-1.php'; const FOO = 2; function foo() {}

class foo { static function baz() {} }

subnamespace\foo(); // Foo\Bar\subnamespace\foo()

subnamespace\foo::staticmethod();

//Foo\Bar\subnamespace\foo::baz

echo subnamespace\FOO; // Foo\Bar\subnamespace\FOO

Fully qualified name

global.php (include 'project.php')

project.php (include 'subproject.php')

subproject.php

▪namespace Project\Sub

class Connection { /* ... */ }

Везде

▪$obj = new \Project\Sub\Connection();

File-1.php

namespace Foo\Bar\subnamespace; const FOO = 1;

function foo() {}

class foo { static function baz() {} }

File-2.php

namespace Foo\Bar; include 'file-1.php'; const FOO = 2; function foo() {}

class foo { static function baz() {} }

\Foo\Bar\foo(); // Foo\Bar\foo()

\Foo\Bar\foo::staticmethod(); // Foo\Bar\foo::baz

echo \Foo\Bar\FOO; // Foo\Bar\FOO

class СlassName{

function __construct() { echo __METHOD__; }

}

function funcName() { echo __FUNCTION__; }

const CONST_NAME = "GLOBAL";

$a = 'ClassName';

$obj = new $a; // ClassName::__construct

$b = 'funcName';

$b(); // funcName

echo constant('CONST_NAME'); // GLOBAL

namespace NS;

class СlassName{

function __construct() { echo __METHOD__; }

}

function funcName() { echo __FUNCTION__; }

const CONST_NAME = "NS";

include 'глобальный код без пространства имен';

$a = 'ClassName';

$obj = new $a; // ClassName::__construct

$b = 'funcName';

$b(); // funcName

echo constant('CONST_NAME'); // GLOBAL

namespace NS;

class СlassName{

function __construct() { echo __METHOD__; }

}

function funcName() { echo __FUNCTION__; }

const CONST_NAME = "NS";

include 'глобальный код без пространства имен';

$a = 'NS\ClassName'; // можно \NS\ClassName

$obj = new $a; // NS\ClassName::__construct

$b = 'NS\funcName'; // можно \NS\funcName

$b(); // NS\funcName

echo constant('NS\CONST_NAME'); // NS\NS

"\\namespacename\\classname"

namespace Foo;

class Bar { /*...*/ }

use My\Full\Classname as Bar;

use My\Full\NSname; // My\Full\NSname as NSname

use \ArrayObject; // импорт глобального класса

$obj = new Bar; // объект класса My\Full\Classname

$obj = new namespace\Bar; // объект класса Foo\Bar

NSname\subns\func(); // функция My\Full\NSname\subns\func

$a = new ArrayObject(array(1)); // глобальный ArrayObject

use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another;

//объект класса My\Full\Classname

NSname\subns\func();

//функция My\Full\NSname\subns\func