За последние 24 часа нас посетили 27195 программистов и 1791 робот. Сейчас ищут 885 программистов ...

Паттерны php

Тема в разделе "PHP для новичков", создана пользователем realasd, 15 май 2011.

  1. realasd

    realasd Активный пользователь

    С нами с:
    14 окт 2010
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Челябинск
    Еслси не сложно, объясните пожалуйста, каким образом можно использовать паттерны?
    Для чего они применяются?
    Приведите какой-нибудь простенький пример(чтобы понятно стало).
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    realasd
    Что такое ООП, класс и экземпляр класса знаешь?
     
  3. realasd

    realasd Активный пользователь

    С нами с:
    14 окт 2010
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Челябинск
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Вот смотри например, паттерн singeton
    PHP:
    1. <?php
    2. class A {
    3.      /* Pattern Singeton */
    4.      private function __construct() {
    5.           /* Your costructor */
    6.      }
    7.  
    8.      private function __clone(){}
    9.  
    10.      private static $instance;
    11.  
    12.      public static function getInstance() {
    13.           if (empty(self::$instance)) {
    14.                self::$instance = new self;
    15.           }
    16.           return self::$instance;
    17.      }
    18.  
    19.      /* Your Class */
    20.      private $count = 0;
    21.  
    22.      public function fn() {
    23.           return ++$this->count;
    24.      }
    25. }
    26.  
    27. $a = A::getInstance();
    28. echo $a->fn();
    29. $b = A::getInstance();
    30. echo $b->fn();
    31. $c = A::getInstance();
    32. echo $c->fn();
    1) Конструктор - приватен. Т.е. нельзя сделать $var = new A; - будет фатальная ошибка
    2) Клонирование тоже приватно - т.е. нельзя сделать копию экземпляра
    3) Экземпляры создаются статичным методом getInstance. Этот метод хранит объект в статичном приватном свойстве $instance;
    Таким образом, получается, что у класса A может быть только один экземпляр, и этот экземпляр нельзя уничтожить или клонировать, и его можно получить в любом месте скрипта с помощью A::getInstance();
    Поэтому он называется singleton (одиночка).
     
  5. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    ЭТО самое важное свойство, его надо выделить жирным шрифтом.