Syntax for extending classes in namespaces is still the same.
Lets call this Object.php:
<?php
namespace com::rsumilang::common;
class Object{
// ... code ...
}
?>
And now lets create a class called String that extends object in String.php:
<?php
class String extends com::rsumilang::common::Object{
// ... code ...
}
?>
Now if you class String was defined in the same namespace as Object then you don't have to specify a full namespace path:
<?php
namespace com::rsumilang::common;
class String extends Object
{
// ... code ...
}
?>
Lastly, you can also alias a namespace name to use a shorter name for the class you are extending incase your class is in seperate namespace:
<?php
namespace com::rsumilang::util;
use com::rsumlang::common as Common;
class String extends Common::Object
{
// ... code ...
}
?>
- Richard Sumilang
Использование пространств имён
На имена классов и функций, объявленых внутри пространства имён всегда можно сослаться по полному имени: MyProject::DB::Connection или MyProject::DB::connect .
Пример #1 Использование имён, объявленных внутри пространств имён
<?php
require 'MyProject/Db/Connection.php';
$x = new MyProject::DB::Connection;
MyProject::DB::connect();
?>
Пространства имён могут быть импортированы в текущий контекст (глобальный или пространство имён) при помощи оператора use. Синтаксис оператора use:
<?php
/* ... */
use Some::Name as Othername;
// Самая простая форма :
use Foo::Bar;
// это то же что и :
use Foo::Bar as Bar;
?>
Оператор use может быть использован только в глобальном пространстве имён - не внутри класса или функции. Импортированные имена действуют с точки импортирования до конца текущего файла. Рекомендуется импортировать имена в начале файла во избежание путаницы.
Пример #2 Импортирование пространств имён и доступ к ним
<?php
require 'MyProject/Db/Connection.php';
use MyProject::DB;
use MyProject::DB::Connection as DbConnection;
$x = new MyProject::DB::Connection();
$y = new DB::connection();
$z = new DbConnection();
DB::connect();
?>
Замечание: Операция импорта пространств имён выполняется только во время компиляции. Все локальные имена заменяются компилятором на их полные эквиваленты. Заметьте, что это не переводит имена в строки. Таким образом динамический импорт пространств имён невозможен.
Использование пространств имён
27-Mar-2008 11:36
