Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Несколько простых вопросов по ООП |
Автор: user074 19.7.2012, 09:04 | ||||||
Доброго времени суток! Помогите пожалуйста разобраться в нескольких, наверное глупых, вопросах: 1. Что делает этот код?
Вызывает функцию в функции? Передает результат одной функции к другой? 2. Для чего следует использовать трейты? В теории я вроде как понимаю, трейты нужны в качестве замены множественного наследования. Но как это выглядит на практике? Что обычно реализуют с помощью трейтов? Когда может понадобиться множественная наследовательность или где на практике применять трейты? 3. Паттерн MVC. Тут в принципе все понятно в теории, только непонятно как именно на практике получать в Контроллере данные из Модели. Для этого требуется реализовать паттерн Registry и передавать через него? Или реализовать Model в виде класса с набором методов, и создавать объект Модели в Контролере? Или просто описать Model функциями и инклудить в Конструкторе? Как это делается обычно?)) 4. Что делает этот код?
То что вызывает статический метод класса понятно. Но что делает run() ? Не конкретно в этом фреймворке имеется ввиду, а что вообще может делать такая конструкция. 5. Уместно ли делать реализацию некоторых частей(возможно основных библиотек) приложения на функциях, чтобы затем вызывать их из любой точки программы не создавая объект в каждом месте, где понадобиться эта функция, как наверное пришлось бы делать, если бы эта функциональность была описана с помощью классов? Или другими словами:
$this->load->model('links'); $links['links'] = $this->links->get_links(); Как сделать возможность вызывать в Controller метод get_links() из класса Links при этом не инициализируя (по крайней мере явно) объект? Псевдо-переменную $this можно предопределить? ![]() Очень надеюсь на вашу помощь т.к. самоучке сложно самому разобраться иной раз в некоторых вопросах и требуется помощь более опытных коллег и я уже похоже совсем запутался. Заранее огромнейшее спасибо! |
Автор: user074 19.7.2012, 15:35 | ||||||||||
Я наверное не так выразился, имелось ввиду как реализовать Method Chaining на php?
О том и речь, что я не знаю как правильно ![]()
Если не сложно, приведите пример, пожалуйста.
Так реализовано в Zend Framework, мне показалось удобным способом подгружать библиотеки в контроллере.
Чтобы подключать и работать с библиотеками (class) в контроллере(class). Ну например чтобы плагины(модули, компоненты) в cms могли использовать библиотеки этой cms. ![]() |
Автор: krypt3r 20.7.2012, 08:33 | ||||||
Небольшой пример:
Пункт 4. Пример. Наверно, грубый, но рабочий.
|
Автор: Fortop 20.7.2012, 15:19 | ||||||||||||
Как удобнее. В последнее время более "модным" считается делегирование и инъекция зависимостей, а не глобальная область видимости. т.е. как-то так:
Я достаточно хорошо его знаю, чтобы не поверить в это. В ZF нет такой смеси процедурного и ООП стиля.
А какие могут быть проблемы? Они же в отличии от CMS знают о существовании этой библиотеки. А чтобы CMS могла подключать неизвестные плагины и модули, нужно хотя бы простое API например:
Простейшая работа с модулем будет идти примерно так:
|