Грамотная организация view с поддержкой мультисайтовости и скинов

Sokil.Dmytro

Новичок
Тоесть екшнам контроллера передавать обьект запроса и в каждом екшне в конце писать return $responce? А значит и каким либо образом этот $responce инициализировать в екшне, либо опять же передавать в параметрах? Както излишне. Почему бы не возложить вопросы связанные с запросом/ответом и диспетчеризацией на того хто и так ими занимается - на фронт-контроллер, а контроллерам поручить их прямые обязанности - работу с моделями и видами
 

Koc

Новичок
так на основании реквеста контроллер и лезет в модельку.

Тоесть екшнам контроллера передавать обьект запроса
не обязательно. Лучше передавать в конструктор или через сеттер весь $container, из которого можно получить все что душе угодно. Ну и какой-нить ControllerAbstract сделать, в котором будут хелперы

PHP:
getRequest
{
  return $this->container->get('request');
}
 

HraKK

Мудак
Команда форума
на фронт-контроллер
А он тут причем?
Должно по цепоче передавать, упрощенно
bootstrap|front_controller|my_controller
->request->request->request-------------\
<-response<-response<-response<-/
 

HraKK

Мудак
Команда форума
Вурдалак
та знаю, отложилось блин и теперь вечно наровлю так написать(
 

Sokil.Dmytro

Новичок
А он тут причем?
Ну у меня такая филосовия, что фронт-контроллер запускает цикл диспетчеризации, передавая диспетчеру обьекты запроса и ответа. Диспетчер получает обьект запроса, создает по нему контроллер, передавая ему обьекты запрос/ответ, и запускает екшн. Потом диспетчер на основе отработанного екшна заполняет обьект ответа. Если был Forward, фронт-контроллер запускает диспетчер с новым обьектом запроса. Вот я и не соображу, зачем делать в екшне return $response; Его же и диспетчер и контроллер могут получать из фронт-контроллера. Хотя какая разница :)
 

Koc

Новичок
С %area_name% все просто, ее можно установить равной frontend в Controller_Frontend_Abstract::preDispatch().
послушал подкаст Фараздаги, говорит, что так лучше не делать а выделять такое в хелперы. Но это ж в каждом контроллере нужно будет вызывать этот хелпер. Или как раз под такие вещи и нужно делать субконтроллеры Controller_(Frontend|Install|Admin)_Abstract а остальное все в хелперы?


А может того, этого? Ну, через аннотации задавать layout area?
 

Koc

Новичок
Есть шаблоны нескольких типов - лейауты и просто небольшие шаблоны, которые используются в блоках(виджетах). Как их различать?
Я вот думаю называть лейауты начиная с @. Норм?
 

Alien85

I like my cat
Прочитал тему и стало не понятно, зачем люди на PHP пишут код построенный на одном ООП? Не легче заюзать c++ или что-то подобное?
(мысли вслух)
 

zerkms

TDD infected
Команда форума
Alien85
Напиши на c++ скрипт, аналогичный <?php echo htmlspecialchars($_GET['trololo']);

?
 

zerkms

TDD infected
Команда форума
Alien85
Не, ну вы всё таки напишите, прям тут?

А потом мы вместе с вами сравним алгоритмическую сложность кода на пхп и c++, решающего абсолютно одинаковую задачу.
 

Alien85

I like my cat
zerkms
Прочитайте это:
послушал подкаст Фараздаги, говорит, что так лучше не делать а выделять такое в хелперы. Но это ж в каждом контроллере нужно будет вызывать этот хелпер. Или как раз под такие вещи и нужно делать субконтроллеры Controller_(Frontend|Install|Admin)_Abstract а остальное все в хелперы?
А может того, этого? Ну, через аннотации задавать layout area?
Потом внимательно перечитайте мой первоначальный пост.

А теперь свой:
А потом мы вместе с вами сравним алгоритмическую сложность кода на пхп и c++, решающего абсолютно одинаковую задачу.
 

phprus

Moderator
Команда форума
Alien85
Не, ну вы всё таки напишите, прям тут?
А потом мы вместе с вами сравним алгоритмическую сложность кода на пхп и c++, решающего абсолютно одинаковую задачу.
Алгоритмическая сложность зависит от алгоритма, а не от языка. Так что с большой вероятностью она будет одинаковой. В случае С++ придется отдельно написать и отладить функцию std::string htmlspecialchars(const std::string& str);, а потом ее можно будет использовать точно так-же как и в PHP.

Судя по всему ты имел ввиду сложность написания решения, так вот эта сложность в случае С++ будет больше. Со сложностью поддержки вопрос, я думаю, спорный.

Прочитал тему и стало не понятно, зачем люди на PHP пишут код построенный на одном ООП? Не легче заюзать c++ или что-то подобное?
(мысли вслух)
Не легче. Писать код на С++ дороже и в областях, где от эффективности выполнения программы(интерпретатор/скомпилированная версия) суммарная эффективность зависит не сильно(основные тормоза - база, диски, медленные клиенты) просто экономически не оправдано.
 

zerkms

TDD infected
Команда форума
phprus
Алгоритмическая сложность именно решения.

В случае с кодом <?php echo htmlspecialchars($_GET['trololo']); она стремится к нулю.

В случае С++ придется отдельно написать и отладить функцию std::string htmlspecialchars(const std::string& str);, а потом ее можно будет использовать точно так-же как и в PHP.
Это только вершина айсберга. Ещё придётся написать и отладить функцию, которая читает и разбирает запрос.

Alien85
перечитал. и? ты предлагаешь переехать на платформу, в которой для работы с вебом ничего нет из коробки. И это всё придётся реализовывать самому или брать непонятное чужое. И всё ради чего?
 

Alien85

I like my cat
перечитал. и? ты предлагаешь переехать на платформу, в которой для работы с вебом ничего нет из коробки.
Ничего нет для работы с вебом??????????????? Лучше промолчу, не хочу тут никого обижать.

Это только вершина айсберга. Ещё придётся написать и отладить функцию, которая читает и разбирает запрос.
То же относится и к PHP.

И это всё придётся реализовывать самому или брать непонятное чужое. И всё ради чего?
Я уже написал - возьмите коробку PHP если уж так нужно :) Не забываем, что код то - открытый, да еще и на том же C.
Ради чего? Ради ООП, о нем же речь!

Не легче. Писать код на С++ дороже и в областях, где от эффективности выполнения программы(интерпретатор/скомпилированная версия) суммарная эффективность зависит не сильно(основные тормоза - база, диски, медленные клиенты) просто экономически не оправдано.
А вот тут я соглашусь, действительно, программа на C++ обойдется дороже. phprus ясно ответил на вопрос.

Я задал вопрос только потому, что последнее время люди помешались на ООП, ссылаясь на то, что отладка становится легче. Я и сам с этим согласен, но в разумных пределах. Человек который откроет проект, в котором один только движок (шаблонизатор) построен на сотне классов зависимых друг от друга, думаю, разберется не быстрее, чем в других скриптах. Хотя, конечно, появляется большая вероятность, что заказчик вернется именно к вам :)

Всем спасибо, я получил ответ на свой вопрос.
 
Сверху