Рабочая тетрадь(4)
.pdf
Лучше, но не надо
<?php
namespace MyProject { const CONNECT_OK = 1;
class Connection { /* ... */ } function connect() { /* ... */ }
}
/* Никакого кода между блоками! */ namespace AnotherProject {
const CONNECT_OK = 1;
class Connection { /* ... */ } function connect() { /* ... */ }
}
?>
Можно и так, но… не надо
<?php
namespace MyProject { const CONNECT_OK = 1;
class Connection { /* ... */ } function connect() { /* ... */ }
}
namespace { // глобальное пространство session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Надо так
my_project.php
▪<?php
namespace MyProject /* ... */ ?>
another_project.php
▪<?php
namespace AnotherProject /* ... */ ?>
index.php
▪<?php
include 'my_project.php'; include 'another_project.php';
Или так
my_project.php
▪<?php
namespace MyProject /* ... */ ?>
another_project.php
▪<?php
namespace AnotherProject include 'my_project.php'; /* ... */ ?>
Относительное имя файла
foo.txt
current_directory/foo.txt
Относительный путь к файлу
sub_directory/foo.txt
current_directory/sub_directory/foo.txt
Абсолютный путь к файлу
/root/foo.txt
/root/foo.txt
Unqualified name
global.php (include 'project.php')
▪class Connection { /* ... */ }
project.php
▪namespace Project
class Connection { /* ... */ }
В пространстве Project (project.php)
▪$obj = new Connection();
В глобальном пространстве (global.php)
▪$obj = new 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(); // Foo\Bar\foo()
foo::baz(); // Foo\Bar\foo::baz
echo FOO; // Foo\Bar\FOO
Unqualified name (константы и функции)
global.php (include 'project.php')
▪const FOO = 'GLOBAL', BAR = 'GLOBAL';
project.php
▪namespace Project const FOO = 'PROJECT';
echo FOO, ' и ' , BAR;
В глобальном пространстве (global.php)
▪GLOBAL и GLOBAL
В пространстве Project (project.php)
▪PROJECT и GLOBAL
namespace Foo;
const E_ALL = 3;
class Exception {/* ... */} function count() {/* ... */}
echo count(); // Foo\count
echo \count(array('a', 'b')); // global
echo strlen('hello'); // global
echo \E_ALL; // global
$e = new \Exception('error'); // global
namespace Foo; function strlen($var) {
//Глобальная функция trim
//Глобальная функция strlen return trim(\strlen($var));
}
echo strlen('hello'); // Foo\strlen
