ФорумПрограммированиеPHP для идиотов → Папки vs Роутер

Папки vs Роутер

  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Авг. 18, 2010, 2:51 п.п., спустя 31 минуту 5 секунд

    А команда, да это по сути действие, и мне кажется не нужно пихать в нее acl и так далее. А она выполняет какие-то атомарные операции

    да именно атомарные, я как бы это хотел сказать, что бы сделать как бы как правильно - атомарно, надо целую кучу наворачивать и может показаться (а оно так может и есть) что лучше уже применить экшн контроллер…
    Вот типа атомарной операции:
    class Auth_Logout_Action extends Kostyl_Action_Abstract {

    public function run()
    {
    $auth = new Auth_Model_Auth();
    if ($auth->getUserId()) {
    $auth->logOut();
    }

    $this->redirect($this->getBaseUrl());
    }
    }

    но $this->redirect($this->getBaseUrl()); как бы нарушает атомарность, понимаешь?!

    И вообще я последнее время не заморачиваюсь и всё подряд тупо валю, даже формы делаю не отдельно, поэтому атомарность вообще расплывается. В основном она концентрируется только в блоках самой страницы как бы, т.е. каждый фрагментик страницы формируется своим экшеном-командой.
    По поводу твоего сервисного слоя, я обычно выношу просто это все в приватные методы контроллера и на этом делу конец… смысл отделять так? не ну всё конечно от задачи зависит.
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Авг. 19, 2010, 1:19 д.п., спустя 10 часов 27 минут 7 секунд

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

    так удобнее повторно использовать код
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 1:43 д.п., спустя 24 минуты 40 секунд

    kostyl, да получается, я повторно могу использовать код контроллеров, а если в другом приложении нужно будет что-то менять, то чаще всего это будет сервисный слой + не люблю когда все в куче: работа с моделями отдельно, контроллеры отдельно, виды отдельно. Удобно, когда логика в одном месте.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:06 д.п., спустя 22 минуты 30 секунд

    krasun, если бы не наличие информации о книге, можно это все вынести еще выше, а то ты так каждый раз будешь одно и то же писать createAction только менять строчку $this->view->title = 'Добавление книги'; Тобишь инкапсулящия не особо лучше, чем допустим у меня в таком случае:

    class TicketController extends Bamb_Controller_Action
    {
    public function addAction()
    {
    if (Zend_Auth::getInstance()->hasIdentity()) {

    $formTicketAdd = new Form_TicketAdd();
    $request = $this->getRequest();

    if ($request->isPost() && $formTicketAdd->isValid($request->getPost())) {
    $newTicket = $formTicketAdd->save(Zend_Auth::getInstance()->getIdentity(), null);
    $this->_redirect('/ticket/info/ticket_id/' . $newTicket->ticket_id);
    }

    $this->view->formTicketAdd = $formTicketAdd;
    }
    else {
    $this->_redirect('/');
    }
    }


    Базара нет, я всё понимаю, зачем и что нужно, просто реально есть разница между выносить и разделять. выносить да, уменьшает писанину, разделять может увеличивать
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:08 д.п., спустя 2 минуты 10 секунд

    kostyl, о ты понял мою идею, я просто промолчал(думал глупо), я просто медленно двигаюсь к автогенерации кода, то есть контроллеры будут генерироваться и виды и так далее, а я только буду создавать модели и определять логику в сервисном слое.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:10 д.п., спустя 2 минуты 1 секунду

    krasun, но помни, что template method не всегда хорош, даже тем, что ты знаешь что используешь его…
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Авг. 19, 2010, 2:11 д.п., спустя 1 минуту 13 секунд


    kostyl, о ты понял мою идею, я просто промолчал(думал глупо), я просто медленно двигаюсь к автогенерации кода, то есть контроллеры будут генерироваться и виды и так далее, а я только буду создавать модели и определять логику в сервисном слое.
    скафолдинг… в кейке есть схожая фишка, пробовал, неудобно, ибо у меня очень разношерстные контроллеры…
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:13 д.п., спустя 1 минуту 27 секунд

    Ну понятно, что кодогенерации есть свои минусы, но для простых контроллеров я считаю это то, что надо.
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Авг. 19, 2010, 2:16 д.п., спустя 2 минуты 55 секунд

    вообще это тоже из руби взято, насколько я помню
    Спустя 156 сек.

    Ну понятно, что кодогенерации есть свои минусы, но для простых контроллеров я считаю это то, что надо.

    не просто для простых, а для простых && явно не изменяющихся в будущем
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:18 д.п., спустя 2 минуты 25 секунд

    Sinkler, кодогенерация? хех, мне кажется это взято еще с первого высокоуровневого языка программирования, c => asm, или c++ => asm )), а может и еще раньше))
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Авг. 19, 2010, 2:22 д.п., спустя 4 минуты 12 секунд

    я бы не сказал, что скафолдинг - это кодогенерация. скафолдинг подразумевает, что в программном каркасе заданы стандартные поведения, которые срабатывают, если не заданы контроллер/модель/вид. никакой код не генерится, он просто берется из фреймворка
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:28 д.п., спустя 6 минут 20 секунд

    Sinkler, а, я блин, думаю о кодогенерации, то есть указываю модель, правила валидации и так далее, а код сервисов, контроллеров и видов генерится сам. И если мне нужно будет что-то изменить, то я могу это править. Или я что-то не так понимаю…
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:36 д.п., спустя 7 минут 44 секунды

    Ну понятно, что кодогенерации есть свои минусы, но для простых контроллеров я считаю это то, что надо.

    это еще тот вопрос. Возможно, если подумать, то можно обойтись одним базовым контроллером, актив рекорд и схема бд в xml. Такая крутая штука получается. Эхххх, нет времени….
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz Авг. 19, 2010, 2:41 д.п., спустя 4 минуты 49 секунд

    kostyl, ну в о чем таком я и думаю, хотя знаю, что такие реализации есть
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Авг. 19, 2010, 2:46 д.п., спустя 5 минут

    krasun, что-то ты меня запутал)))

    ты хочешь, чтобы во время выполнения если нет контроллера/модели/вида, то он генерился из стандартов (в кейке это скафолдинг), или же сделать табличку в базе данных, а потом запустить скрипт и он тебе напишет модель, контроллер, вьюшки (в кейке для этого есть Bake, его называют кодогенератором, но, блин, кодогенерация для меня это как в википедии написано)?
    Спустя 79 сек.
    Возможно, если подумать, то можно обойтись одним базовым контроллером, актив рекорд и схема бд в xml.

    в кейке для скафолдинга достаточно таблицы в базе данных
    Спустя 63 сек.
    а вообще работать надо, а я тут пиздю с вами))))))))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!