Cours de PHP 5 complet

Espaces de noms
Introduction
Les espaces de noms, aka namespaces, sont un moyen de résoudre les collisions de noms de constantes, fonctions et classes.
Par exemple si j’ai besoin d’une classe pour filtrer mes variables, je peux avoir envie de créer une classe nommée « Filter ». Or, ce nom est sans doute déjà utilisé par PHP ou par l’une des bibliothèques incluses dans mes scripts. La solution classique est de préfixer le nom de la classe de manière à le rendre unique : « DVP_Filter ».
Ou dans un contexte MVC, j’ai souvent des modèles et des contrôleurs pour le même concept. Selon le framework utilisé, la nomenclature change mais le nom de classe est généralement préfixé lui aussi.
PHP 5.3 introduit le concept des namespaces dans PHP. Cela nous permet de définir des noms de classes, fonctions etc. au sein d’un espace de noms, par exemple le namespace « DVP » peut contenir la classe « Filter » alors que l’espace de noms global contient également une classe « Filter ». Nous pouvons ainsi avoir autant de classes « Filter » que nous pouvons imaginer de noms de namespaces.
Les espaces de noms ne sont disponibles qu’à partir de PHP 5.3, qui est actuellement en cours de développement. Par conséquent, rien de ce qui a ici trait aux espaces de noms n’est final (jusqu’à la sortie effective de PHP 5.3). Des mots clefs peuvent notamment apparaître, disparaître ou être renommés.
Syntaxe
Déclaration : <?php namespace <Nom>;
Aucune reproduction, même partielle, ne peut être faite de ce site et de l’ensemble de son contenu : textes, documents, images, etc sans l’autorisation expresse de l’auteur. Sinon vous encourez selon la loi jusqu’à 3 ans de prison et jusqu’à 300 000 E de dommages et intérêts. http://g-rossolini.developpez.com/tutoriels/php/cours/
Déclaration : …
Utilisation : <?php use <Nom> as <Alias>; $object = new Models::Member(); //avec le nom complet $object = new M::Member(); //avec l’alias
Les espaces de noms composés peuvent être importés tels quels ou avec un alias :
<?php namespace Cours::Models; …
<?php use Cours::Models; use Cours::Models as M; …
En revanche, les noms qui ne sont pas composés doivent être importés avec un alias :
<?php namespace Models; …
<?php use Models as M; …
Erreur si on ne définit pas d’alias :
<?php use Models; …
Warning: The use statement with non-compound name ‘Models’ has no effect in C:\Web\online\http\cours-php\namespaces\index.php on line 6
Bien entendu, il est possible d’imbriquer les espaces de noms :
<?php namespace Offline::Sites::Application::Models;
<?php use Offline::Sites::Application::Models as M; $object = new M::Member();
Si vous êtes dans un espace de noms (c’est-à-dire dans un script contenant par exemple « namespace Cours; »), vous pouvez vous abstenir d’utiliser le préfixe « Cours:: » devant les symboles de cet espace de noms. En effet, PHP suppose que vous utilisez des symboles du même espace de noms, ou bien un symbole du langage. Si vous voulez utiliser un symbole du scope global (mais pas interne à PHP), préfixez le nom du symbole par « :: ». Si vous utilisez un symbole d’un autre espace de noms, il faut bien entendu préfixer votre symbole de l’espace de noms complet..

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *