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
Utilisation des espaces de noms
Toutes les classes et fonctions, dans un espace de noms, peuvent être référencées par le nom complet - e.g. MyProject::DB::Connection ou MyProject::DB::connect - à n'importe quel moment.
Exemple #1 Utilisation du nom de l'espace de noms
<?php
require 'MyProject/Db/Connection.php';
$x = new MyProject::DB::Connection;
MyProject::DB::connect();
?>
Les espaces de noms peuvent être importées dans le contexte courant (global ou de l'espace de noms) en utilisant l'opérateur use. La syntaxe est la suivante :
<?php
/* ... */
use Some::Name as Othername;
// La forme simplifiée de use:
use Foo::Bar;
// Ce qui est identique à :
use Foo::Bar as Bar;
?>
L'opérateur use ne peut être utilisé que dans le contexte global, et non dans une classe ou une fonction. Les noms importés ont des effets depuis le point d'importation jusqu'à la fin du fichier courant. Il est recommandé d'effectuer l'importation au tout début du fichier afin d'éviter toute confusion.
Exemple #2 Importation et utilisation de l'espace de noms
<?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();
?>
Note: L'opération d'importation s'effectue uniquement lors de la compilation ; tous les noms locaux sont convertis en leur équivalent au moment de la compilation. Notez que le compilateur ne traduit pas les noms en simples chaînes, ainsi les fonctions de rappel ne sauraient se prévaloir des règles d'importation.
Utilisation des espaces de noms
27-Mar-2008 05:36
