не могу придти к рациональному решению такой ситуации: например есть класс bootstrap который играет роль некоего загрузчика определённых классов и создания его объекта, но перед тем, как загрузить класс и создать объект, нужно определить какой именно класс загружать (результат будет в $class_name) и + выполнить пару функций, все эти функции содержатся в классе main (достаточно большая библиотека), а потом весь потенциал этой библиотеки потребуется в загруженном классе, но создавать там ещё один экземпляр класса main не считаю рациональным, вызывать методы операцией разрешения области действия не вариант Код (Text): class bootstrap { function __construct() { $main = new main(); //вызов неких методов класса main //определение имени класса, например $class_name будет содержать 'new_class' new $class_name(); } } Код (Text): class new_class { //в методах этого класса потребуются вызовы методов класса $main } у меня возникла идея передать по ссылке объект класса main в класс new_class, но как то мне это не оч нравится (что скажите о таком варианте?) Код (Text): new $class_name($main); Код (Text): class new_class { protected $main; function __construct(&$main) { $this->main = $main; } }
Сначала суда, потом, все вопросы. viewtopic.php?f=1&t=449&p=3670&hilit=%D0%90%D0%B2%D0%B0%D1%82%D0%B0%D1%80%D1%8B#p3670
в смысле вы предлагаете сделать класс main глобальным, я уже думал об этом, но мне нужно использование $this-> в этом классе нет, наследование в этом случаи не вариант
в статиках есть self:: разницы нету... хз. У вас одно тянет другое, поэтому только вам под силу принять решение и не развалить всё нахрен =)
когда я начал гуглить по вопросу статических классов, но наткнулся на паттерн Singleton Код (Text): class Singleton { protected static $instance; // object instance private function __construct(){ /* ... @return Singleton */ } // Защищаем от создания через new Singleton private function __clone() { /* ... @return Singleton */ } // Защищаем от создания через клонирование private function __wakeup() { /* ... @return Singleton */ } // Защищаем от создания через unserialize public static function getInstance() { // Возвращает единственный экземпляр класса. @return Singleton if ( is_null(self::$instance) ) { self::$instance = new Singleton; } return self::$instance; } public function doAction() { /* ... */ } } Singleton::getInstance()->doAction(); // Применение думаю этот вариант мне подходит