Bambino
Новичок
Вопрос по теории ООП программирования
По идее мой вопрос из категории вопросов по теории программирования, но по просьбе модератора пишу сюда. Итак, пытаюсь освоить ООП программирование для PHP. В принципе определенный опыт есть, но есть моменты, которые бы я хотел прояснить. Почитав документацию по PHP ООП, посмотрев код некоторых фреймворков и т.п. заметил, что любое приложение запускается обычно одним методом, т.е. что-то типа
Именно этот главный класс "приложения" и занимается дальнейшим созданием других классов и собственно управляет приложением. Дальше любая другая функциональность, по идее, должна "храниться" в других классах, т.е. если нужна работа с БД, то пишем класс управления БД, если нужна работа с протоколированием, то пишем класс протокола и т.д. Тогда с определенной уверенностью я могу сказать, что для хранения и работы с конфигурацией приложения должен быть класс, который будет считывать (например, из файла) и хранить конфигурацию приложения, а также обновлять ее. И вот тут меня определенного рода затык.
Имею примерно такой код:
Я не знаю как правильно делать, т.е. нужно ли создавать объект $_config как свойство класса Application или же это должен быть какой-то "глобальный" класс. Но в ООП понятие глобальности как такового нет (?). Т.е. в данном случае это должен быть класс, где параметры конфигурации могут быть получены через какой-нибудь статический метод.
Если все еще не понятен мой вопрос, то дополняю следующим. В методе self::loadPlugins подключаются и создаются объекты плагинов, классы которых находятся в неком каталоге. Каждый класс плагина использует определенную часть конфигурации приложения. Мой конфигурационный файл представлен в виде ini-файла, который я загружаю через parse_ini_file, где для каждого плагина есть своя секция. Вопрос - как плагину достучаться до своей конфигурации, если конфигурацией управляет отдельный класс (а следовательно объект). Правильнее будет создать какой-то "глобальный" объект Config, к которому я смогу обращаться как из кода плагинов, так из кода любого другого класса, например, в классах ядра мне понадобиться обратиться к конфигурации? Или же объект конфигурации создается в классе приложения (см. выше) и потом просто передается по ссылке в любой другой класс, которому необходимо использовать конфигурацию? Очень надеюсь, что выразил свои мысли правильно.
Т.е. вот примеры кода:
Что более правильно?
По идее мой вопрос из категории вопросов по теории программирования, но по просьбе модератора пишу сюда. Итак, пытаюсь освоить ООП программирование для PHP. В принципе определенный опыт есть, но есть моменты, которые бы я хотел прояснить. Почитав документацию по PHP ООП, посмотрев код некоторых фреймворков и т.п. заметил, что любое приложение запускается обычно одним методом, т.е. что-то типа
PHP:
$app = new Application();
$app->run()
Имею примерно такой код:
PHP:
class Application {
private $_config = null;
public function run () {
self::loadCore();
self::_loadConfig(); // вот здесь загружается конфигурация
self::loadPlugins
}
private function _loadConfig () {
$this->_config = new Config (); // создается объект конфигурации, через который я могу получать определенные параметры приложения
}
}
Если все еще не понятен мой вопрос, то дополняю следующим. В методе self::loadPlugins подключаются и создаются объекты плагинов, классы которых находятся в неком каталоге. Каждый класс плагина использует определенную часть конфигурации приложения. Мой конфигурационный файл представлен в виде ini-файла, который я загружаю через parse_ini_file, где для каждого плагина есть своя секция. Вопрос - как плагину достучаться до своей конфигурации, если конфигурацией управляет отдельный класс (а следовательно объект). Правильнее будет создать какой-то "глобальный" объект Config, к которому я смогу обращаться как из кода плагинов, так из кода любого другого класса, например, в классах ядра мне понадобиться обратиться к конфигурации? Или же объект конфигурации создается в классе приложения (см. выше) и потом просто передается по ссылке в любой другой класс, которому необходимо использовать конфигурацию? Очень надеюсь, что выразил свои мысли правильно.
Т.е. вот примеры кода:
PHP:
class Plugin1 {
public function __construct () {
echo Config::PluginName["SomeProperty"]; // глобальный доступ к свойству
}
}
class Plugin2 {
public function __construct (&$configObject) {
echo $configObject->PluginName["SomeProperty"]; // получили доступ к свойству через ссылку на объект конфигурации
}
}
:
Прочитал, правда бегло, ни за что не зацепился. Можно как-то в двух-трех словах?