Manuel PHP

Table des matières

Préface
I. Au moment de commencer
II. Installation et configuration
III. Référence du langage
IV. Sécurité
V. Caractéristiques
VI. Référence des fonctions
VII. PHP et le moteur interne Zend
VIII. FAQ : foire Aux Questions
IX. Annexes
Remerciements



Masques

Les masques sont un moyen de décrire les meilleures pratiques et les bonnes conceptions. Ils proposent une solution flexible aux problèmes habituels de programmation.

Usine

Le masque d’usine permet l’instanciation d’objets durant l’exécution. Il est appelé “masque d’usine” puisqu’il est responsable de la “fabrication” d’un objet. Un paramètre d’usine reçoit le nom de la classe pour l’instancier en tant qu’argument.

Exemple 19-25. Méthode de paramètre d’usine

<?php
class Exemple
{
    // La méthode de paramètre d'usine
    public static function factory($type)
    {
        if (include_once 'Drivers/' . $type . '.php') {
            $classname = 'Driver_' . $type;
            return new $classname;
        } else {
            throw new Exception ('Driver non trouvé');
        }
    }
}
?>

Définir cette méthode dans une classe permet de charger un pilote à la volée. Si la classe “Example” était une classe d’abstraction de base de données, le chargement des pilotes “MySQL” et “SQLite” pourrait être effectué comme ceci :

<?php
// Chargement du driver MySQL
$mysql = Exemple::factory('MySQL');
 
// Chargement du driver SQLite
$sqlite = Example::factory('SQLite');
?>

Singleton

Le masque singleton est utilisé dans les situations où l’on a besoin qu’il y ait une unique instance d’une certaine classe. L’exemple le plus commun est une connexion à une base de données. L’implémentation de ce masque permet au développeur de rendre cette unique instance facilement accessible par beaucoup d’autres objets.

Exemple 19-26. Fonction Singleton

<?php
class Example
{
    // instance de la classe
    private static $instance;
 
    // Un constructeur privé ; empêche la création directe d'objet
    private function __construct() 
    {
        echo 'Je suis construit';
    }
 
    // La méthode singleton
    public static function singleton() 
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
 
        return self::$instance;
    }
 
    // Exemple d'une méthode
    public function bark()
    {
        echo 'Woof!';
    }
 
    // Prévient les utilisateurs sur le clônage de l'instance
    public function __clone()
    {
        trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR);
    }
}
 
?>

Ceci autorise une unique instance de la classe “Example”.

<?php
// Ceci échoue car le constructeur est privé
$test = new Example;
 
// Ceci récupère toujours une seule instance de la classe
$test = Example::singleton();
$test->bark();
 
// Ceci provoque une erreur E_USER_ERROR.
$test_clone = clone $test;
 
?>

Travail collaboratif

Contribuez, en ajjoutant des elements a cette page de manuel :

Merci de votre aide
L’equipe Php.fr

 


Index | Afficher le texte source | Anciennes révisions | Derniers changements | Connexion
©2007 Wiki Copyright