PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Espace global> <Définition de l'espace de noms
Last updated: Fri, 20 Jun 2008

view this page in

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;
?>
Le nom importé fonctionne comme ceci : chaque fois que le compilateur rencontre le nom local Othername (comme nom stand-alone ou comme préfixe au nom long, séparé par ::), le nom Some::Name importé y est substitué.

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.



add a note add a note User Contributed Notes
Utilisation des espaces de noms
richard at richard-sumilang dot com
27-Mar-2008 02:36
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

Espace global> <Définition de l'espace de noms
Last updated: Fri, 20 Jun 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites