За последние 24 часа нас посетил 18001 программист и 1613 роботов. Сейчас ищут 878 программистов ...

объект класса

Тема в разделе "Прочие вопросы по PHP", создана пользователем Xumuk, 28 сен 2012.

  1. Xumuk

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

    С нами с:
    28 сен 2012
    Сообщения:
    9
    Симпатии:
    0
    не могу придти к рациональному решению такой ситуации:
    например есть класс bootstrap который играет роль некоего загрузчика определённых классов и создания его объекта, но перед тем, как загрузить класс и создать объект, нужно определить какой именно класс загружать (результат будет в $class_name) и + выполнить пару функций, все эти функции содержатся в классе main (достаточно большая библиотека), а потом весь потенциал этой библиотеки потребуется в загруженном классе, но создавать там ещё один экземпляр класса main не считаю рациональным,
    вызывать методы операцией разрешения области действия :):) не вариант
    Код (Text):
    1.  
    2. class bootstrap
    3. {
    4.     function __construct()
    5.     {
    6.         $main = new main();
    7.         //вызов неких методов класса main
    8.         //определение имени класса, например $class_name будет содержать 'new_class'
    9.         new $class_name();
    10.     }
    11. }
    Код (Text):
    1.  
    2. class new_class
    3. {
    4.     //в методах этого класса потребуются вызовы методов класса $main
    5. }
    у меня возникла идея передать по ссылке объект класса main в класс new_class, но как то мне это не оч нравится (что скажите о таком варианте?)
    Код (Text):
    1.  
    2. new $class_name($main);
    Код (Text):
    1.  
    2. class new_class
    3. {
    4.     protected $main;
    5.     function __construct(&$main)
    6.     {
    7.         $this->main = $main;
    8.     }
    9. }
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  3. Xumuk

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

    С нами с:
    28 сен 2012
    Сообщения:
    9
    Симпатии:
    0
    ну теперь можно и к вопросу перейти
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чем статик плох?
     
  5. jenya777777

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

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Может через extends попробовать?
     
  6. Xumuk

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

    С нами с:
    28 сен 2012
    Сообщения:
    9
    Симпатии:
    0
    в смысле вы предлагаете сделать класс main глобальным, я уже думал об этом, но мне нужно использование $this-> в этом классе

    нет, наследование в этом случаи не вариант
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в статиках есть self::

    разницы нету...

    хз. У вас одно тянет другое, поэтому только вам под силу принять решение и не развалить всё нахрен =)
     
  8. Xumuk

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

    С нами с:
    28 сен 2012
    Сообщения:
    9
    Симпатии:
    0
    когда я начал гуглить по вопросу статических классов, но наткнулся на паттерн Singleton
    Код (Text):
    1.  
    2.  
    3. class Singleton {
    4.     protected static $instance;  // object instance
    5.     private function __construct(){ /* ... @return Singleton */ }  // Защищаем от создания через new Singleton
    6.     private function __clone()    { /* ... @return Singleton */ }  // Защищаем от создания через клонирование
    7.     private function __wakeup()   { /* ... @return Singleton */ }  // Защищаем от создания через unserialize
    8.     public static function getInstance() {    // Возвращает единственный экземпляр класса. @return Singleton
    9.         if ( is_null(self::$instance) ) {
    10.             self::$instance = new Singleton;
    11.         }
    12.         return self::$instance;
    13.     }
    14.     public function doAction() { /* ... */ }
    15.  }
    16.  Singleton::getInstance()->doAction(); // Применение
    думаю этот вариант мне подходит
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я так полагал, что вам он известен...
     
  10. Xumuk

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

    С нами с:
    28 сен 2012
    Сообщения:
    9
    Симпатии:
    0
    нет, со статическими классами раньше сталкиваться не приходилось
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7