Посты по тегу "singleton":

Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Шаблон проектирования Singleton

<?php
class Example
{
    // Содержит экземпляр класса
    private static $instance;
    
    // Закрытый конструктор; предотвращает прямой доступ к
    // созданию объекта
    private function __construct() 
    {
        echo 'Я конструктор';
    }

    // Метод синглтон
    public static function singleton() 
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }

        return self::$instance;
    }
    
    // Метод для примера
    public function bark()
    {
        echo 'Гав!';
    }

    // Предотвращает клонирование экземпляра класса
    public function __clone()
    {
        trigger_error('Клонирование запрещено.', E_USER_ERROR);
    }

}

?>

// Пример работы
// Позволяет вернуть единственный экземпляр класса Example
<?php
// Такой вариант завершится неудачей, так как конструктор
// объявлен как private
$test = new Example;

// Это всегда возвращает единственный экземпляр класса
$test = Example::singleton();
$test->bark();

// Это вызовет ошибку E_USER_ERROR.
$test_clone = clone $test;

?>
Хрестоматийный пример шаблона проектирования Singleton на php5. Взято с http://www.php.net/manual/ru/language.oop5.patterns.php
2009-01-11 10:58:32
Pixel Чтобы добавлять в избранное, нужно авторизироваться

На правах рекламы

Icon-rating-openIcon-rating-openIcon-rating-openIcon-rating-openIcon-rating-open
2010-09-04 13:16:06