Это набор инструментов, для звездных объектов в них есть фабричные методы. Но пример я поправил, теперь должно быть понятнее.lmbToolkit :: merge(new SpeakingTools ());
это точно объект создаётся не "внутри"
Это не про соответствие с тезисом, это пример к моему опыту, в котором сиглтон-интерфейс(ака доступ из разных слоев) сильно пересекается с синглтоном-экземляром.Я понял, что ты говоришь об синглтоне-экземпляре, а не о синглтоне-интерфейсе. Я тока не понял, что тебе мешает это сделать и где тут несоответствие с тезисом в #23 ?
примеров как правильно делать. вот у меня,допустим, есть классы-мепперы. в конструкторе при инстанцировании этих классов вызываетсяпримеров зависимостей? или чего?
$this->db = Database::getInstanse()
$this->setAdapter( Core_Application::getInstance()->getAdapter() );
->setAdapter( Core_Db::factory( 'Mysqli',
$Application->getParam( 'dbHost' , '127.0.0.1' ),
$Application->getParam( 'dbUsername' , 'root' ),
$Application->getParam( 'dbPassword' , '' ) ) );
Это сиквел темы "чем плох ООП".пока не будет примеров в этой теме, ответ совсем не очевиден
потому что легче вначале инициализировать нужное и подменять тогда когда мне надо, а не по всему коду бегать и изменять DB_DEFAULT на DB_ANOTHER.Core_Application::getAdapter(DB_DEFAULT)?
согласенЭээ, то где вы говорите про синглтон не как конкретную реализацию, а как единичный экземпляр - это же прекрасно делается через DI/IoC, только на правильном уровне (об "одиночности" решает среда а не сам класс)!
Я верю, что фраза "я не знаю, расскажи пожалуйста " уместна.потому что легче вначале инициализировать нужное и подменять тогда когда мне надо, а не по всему коду бегать и изменять DB_DEFAULT на DB_ANOTHER.
Каг бы, неуместный вопрос вообще.
$db = Database::instance(); // Вернет активное соединение с базой.
$db = Database::instance('secondary'); // Вернет нужное именованное соединение, есть ключевое слово default - по нему возвращается первое описанное в конфигурации соединение
$db = Database::uses('secondary'); // Вернет именованное соединение и сделает его активным
Database::init(Configuration::Load('configuration/database.php'));
<?php
return array( настройки подключения );
?>
?grigori написал(а):(вместо процедурного mysql поставь объекты mysqli/pdo)
Я подумал, что у тебя могут в одном объекте храниться все хендлеры, полученные из mysql_conect, и вызовом ::uses ты на лету выставляешь активное.