![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
user074 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 19.7.2012 Репутация: нет Всего: нет |
Доброго времени суток!
Помогите пожалуйста разобраться в нескольких, наверное глупых, вопросах: 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 можно предопределить? ![]() Очень надеюсь на вашу помощь т.к. самоучке сложно самому разобраться иной раз в некоторых вопросах и требуется помощь более опытных коллег и я уже похоже совсем запутался. Заранее огромнейшее спасибо! |
||||||
|
|||||||
Fortop |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
http://en.wikipedia.org/wiki/Method_chaining
Обратиться к методам этой модели. Что для этого придется сделать предварительно - зависит от того, как вы писали. Прочитать из Реестра или инициализировать инстанс класса.
Выполнять последовательность действий заложенных в логику выполнения приложения. Это по логике. На практике зависит от разработчика. Что он заложил в этот run(), то там и будет
Почему нет? А вот для подобного перемешивания, как в примере, я причин не вижу.
Только статические методы для объекта. Или lazy load и работа через сервисы и фабрики. MyObjectFactory::create('myCoolObj')->get_links(); Но зачем? Это вопрос, который проще проверить самостоятельно, чем ожидать ответа. -------------------- Мир это Я. Живее всех живых. |
||||||||||
|
|||||||||||
user074 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 19.7.2012 Репутация: нет Всего: нет |
Я наверное не так выразился, имелось ввиду как реализовать Method Chaining на php?
О том и речь, что я не знаю как правильно ![]()
Если не сложно, приведите пример, пожалуйста.
Так реализовано в Zend Framework, мне показалось удобным способом подгружать библиотеки в контроллере.
Чтобы подключать и работать с библиотеками (class) в контроллере(class). Ну например чтобы плагины(модули, компоненты) в cms могли использовать библиотеки этой cms. ![]() Это сообщение отредактировал(а) user074 - 19.7.2012, 15:37 |
||||||||
|
|||||||||
krypt3r |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 3 Всего: 16 |
Небольшой пример:
Пункт 4. Пример. Наверно, грубый, но рабочий.
Это сообщение отредактировал(а) krypt3r - 20.7.2012, 08:45 |
||||||
|
|||||||
Fortop |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Как удобнее. В последнее время более "модным" считается делегирование и инъекция зависимостей, а не глобальная область видимости. т.е. как-то так:
Я достаточно хорошо его знаю, чтобы не поверить в это. В ZF нет такой смеси процедурного и ООП стиля.
А какие могут быть проблемы? Они же в отличии от CMS знают о существовании этой библиотеки. А чтобы CMS могла подключать неизвестные плагины и модули, нужно хотя бы простое API например:
Простейшая работа с модулем будет идти примерно так:
-------------------- Мир это Я. Живее всех живых. |
||||||||||||
|
|||||||||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |