ФорумПрограммированиеPHP для идиотовPHP и ООП → непонятки с ООП

непонятки с ООП

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 8 мая 2010 г. 23:46, спустя 20 минут 59 секунд

    тогда сразу делай адаптеры. И внутри своего logout делай $this->adapter->logout
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 9 мая 2010 г. 1:36, спустя 1 час 49 минут 38 секунд

    Синглтон для единственности экземпляра класс. Это делается для ЕДИНСТВЕННОСТИ. Если ты, например, добавляешь объекты в поле класс, например в массив, то ты можешь добавить объекты в один экземпляр, а можешь в несколько. Так вот если тебе надо только в один, то надо использовать синглтон. Вот такой синий расклад ))
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 9 мая 2010 г. 7:07, спустя 5 часов 31 минуту 5 секунд

    SpartakuS, варианты:
    - Singleton (т.к. статический метод можно вызвать из любой области видимости)
    - Registry (т.к. статический метод можно вызвать из любой области видимости)
    - передать готовый объект класса Cookie в конструктор User и сохранить в свойстве юзера.

    Почитай про Инверсию зависимости
    ιιlllιlllι унц-унц
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 10 мая 2010 г. 20:13, спустя 1 день 13 часов 6 минут

    добавлю еще ссылку к artoodetoo, про S.O.L.I.D вкратце - http://blog.byndyu.ru/2009/10/solid.html
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 10 мая 2010 г. 22:23, спустя 2 часа 9 минут 19 секунд

    artoodetoo, krasun,
    спасибо.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 31 мая 2010 г. 22:23, спустя 20 дней 23 часа 59 минут

    Что то типа синглтон хранилища для глобал переменных. Хуита?
    <?php
    /*
    * Статический singlton класс, который служит для глобализации классов.
    *
    * @author vaseninm
    * @version 1.0
    *
    */
    class Pixelio {

    /*
    * Переменная в которой будет записан объект
    * @name $instance
    */
    static private $instance = NULL;

    static function get()
    {
    if (self::$instance == NULL) {
    self::$instance = new Pixelio();
    }
    return self::$instance;
    }

    static function set($name, $var)
    {
    if (self::$instance == NULL) {
    self::$instance = new Pixelio();
    }
    self::$instance->{$name} = $var;
    }

    private function __construct(){}

    private function __clone(){}

    }
    ?>
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 31 мая 2010 г. 22:27, спустя 4 минуты 35 секунд

            if (self::$instance == NULL)  {
    self::$instance = new Pixelio();
    }

    нахуй это?
    заведи статическую переменную и в ней храни данные
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 31 мая 2010 г. 22:31, спустя 4 минуты 12 секунд

    SpartakuS, вопервых метод укажи область видимости (паблик, протектед, приват)
    это что за нах ?
    self::$instance = new Pixelio();

    ты же вроде пишешь что класс статический
    Спустя 18 сек.
    блять, миня апиридили
    Спустя 67 сек.


    /**
    * Registry collection
    *
    * @var array
    */
    static private $_registry = array();

       /**
        * Retrieve a value from registry by a key
        *
        * @param string $key
        * @return mixed
        */
       public static function registry($key)
       {
           if (isset(self::$_registry[$key])) {
               return self::$_registry[$key];
           }
           return null;
       }

       /**
        * Register a new variable
        *
        * @param string $key
        * @param mixed $value
        * @param bool $graceful
        * @throws Mage_Core_Exception
        */
       public static function register($key, $value, $graceful = false)
       {
           if (isset(self::$_registry[$key])) {
               if ($graceful) {
                   return;
               }
               self::throwException('Mage registry key "'.$key.'" already exists');
           }
           self::$_registry[$key] = $value;
       }
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 31 мая 2010 г. 22:33, спустя 1 минуту 28 секунд

    Абырвалг, так чтоли?
    class Pixelio {

       /*
        * Переменная в которой будет записан объект
        * @name $instance
        */

       static public function get($name)
       {
           return $this->{$name} ;
       }

       static public function set($name, $var)
       {
           $this->{$name} = $var;
       }
    }
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 31 мая 2010 г. 22:34, спустя 1 минуту 37 секунд

    внутри статик нельзя $this использовать
    self::$container[$name] = $var
    Спустя 43 сек.
    блять, миня апиридили

    хе-хе)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 31 мая 2010 г. 22:43, спустя 8 минут 41 секунду

    А бля. Ну да.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 31 мая 2010 г. 23:14, спустя 30 минут 43 секунды

    <?php
    /*
    * Статический singlton класс, который служит для глобализации классов.
    *
    * @author vaseninm
    * @version 1.0
    *
    */
    class Pixelio {


    static private $_registry;

    /*
    * Доступ к классу. Получение переменных.
    * @name get
    * @param name
    * @return object
    */
    static function get($name)
    {
    return self::$_registry[$name] ? self::$_registry[$name] : NULL;
    }

    /*
    * Записываем переменную в хранилище
    * @param $name Имя для обращения Pixelio::get('name')
    * @param $var Объект класса, к которому мы будем обращатся
    * @return bool
    */
    static function set($name, $var)
    {
    if (isset(self::$_registry[$name])) {
    throw new Exception ('Такой объект уже записан.');
    } else {
    self::$_registry[$name] = $var;
    return true;
    }
    }

    }
    ?>


    Вот так?
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 31 мая 2010 г. 23:04, спустя 23 часа 50 минут 31 секунду

    А ну в общем так. У нрг почти так же.
    Спустя 29 сек.
    А че посты не склеиваются?
    Спустя 14 сек.
    О бля. Склеиваются.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 31 мая 2010 г. 23:05, спустя 1 минуту

            if (self::$_registry[$name]) {
               return self::$_registry[$name];
           } else {
               return NULL;
           }

    можно через тренарный оператор в одну строку свернуть

    — self::$instance->{$name} = $var;
    +++ self::$registry[$name] = $var;
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 31 мая 2010 г. 23:10, спустя 4 минуты 58 секунд


            if (self::$_registry[$name]) {
               return self::$_registry[$name];
           } else {
               return NULL;
           }

    можно через тренарный оператор в одну строку свернуть
    спасибо кэп =)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!