ФорумПрограммированиеPHP для идиотовPHP и ООП → Yii ты меня обманывал

Yii ты меня обманывал

  • Troy

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

    Spritz 28 августа 2012 г. 13:57

    Нифига я тебя не понял, тем более твоих заключений. Стандартные модели Yii это наследники CActiveRecord, объекты данных, пример:
    $model = new Product;
    $model->name = 'Товар 1';


    Толстые контроллеры? Где они толстые-то? Вот пример круда
    <?php

    /**
    * Manage News
    * @author Troy <[email protected]>
    */
    class NewsAdminController extends BaseAdminController
    {

       public function actionView($id)
       {
           $this->render('view', array(
               'model' => $this->loadModel('News', $id),
           ));
       }


       public function actionCreate()
       {
           $model = new News;
           $form = new Form('forms.News', $model);

           if ($form->submited() && $model->save())
               $this->redirect(array('view', 'id' => $model->id));

           $this->render('create', array(
               'form' => $form,
           ));
       }


       public function actionDelete($id)
       {
           $this->loadModel($id)->delete();
           if (!isset($_GET['ajax']))
               $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
       }


       public function actionUpdate($id)
       {
           $model = $this->loadModel('News', $id);
           $form = new Form('forms.News', $model);

           if ($form->submited() && $model->save())
               $this->redirect(array('view', 'id' => $model->id));

           $this->render('create', array(
               'form' => $form,
           ));
       }


       public function actionIndex()
       {
           $model = new News('search');
           $model->unsetAttributes();
           if (isset($_GET['News']))
               $model->attributes = $_GET['News'];

           $this->render('admin', array(
               'model' => $model,
           ));
       }


    }
  • Nek

    Сообщения: 99 Репутация: N Группа: Адекваты

    Spritz 15 октября 2015 г. 8:04, спустя 1142 дня 18 часов 6 минут

    Стандартные модели Yii это наследники CActiveRecord, объекты данных

    Не обязательно так. Модели могут быть еще CFormModel например.

    Толстые контроллеры? Где они толстые-то?

    Вообще Yii - это такой фреймворк, в котором как и во многих других фреймворках демонстрируются маленькие изящные примеры в туториалах.
    На проектах с 100+ тыс. строк кода контроллеры действительно становятся толстыми =)
    А так - да, все красиво, понятно, "тонко".

  • adw0rd

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

    Spritz 15 октября 2015 г. 10:33, спустя 2 часа 29 минут 33 секунды

    @Nek, надо просто разбивать контроллеры на мелкие. Ваш кэп

    adw/0
  • phpdude

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

    Spritz 15 октября 2015 г. 10:36, спустя 2 минуты 30 секунд

    надо уметь писать код так, чтобы не больше 2 "страниц а4" кода было на файл. далеко не все так писать могут и далеко не все языки такое переварят адекватно, пхп может и раком встать )

    Сапожник без сапог
  • md5

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

    Spritz 15 октября 2015 г. 10:37, спустя 1 минуту 45 секунд

    клуб пиздаболов про пхп)

    все умрут, а я изумруд
  • kostyl

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

    Spritz 15 октября 2015 г. 11:28, спустя 50 минут 49 секунд

    Надо юзать MCCM

  • Nek

    Сообщения: 99 Репутация: N Группа: Адекваты

    Spritz 16 октября 2015 г. 0:09, спустя 12 часов 40 минут 57 секунд

    @Nek, надо просто разбивать контроллеры на мелкие. Ваш кэп

    @adw0rd, Yii не поощряет вызов контроллеров из других контроллеров, рекомендуется юзать для этого компоненты. Ваш кэп.
    но иногда я так делаю когда мне лень писать отдельный компонент для одного метода

    надо уметь писать код так, чтобы не больше 2 "страниц а4" кода было на файл. далеко не все так писать могут и далеко не все языки такое переварят адекватно, пхп может и раком встать )

    @phpdude даа, extract method, все дела) но идеальное разбивается об реалии, например об легаси или при просто специфических требованиях. Например я встречал код для поискового раздела по товарам, который генерит всякие seo-теги в зависимости от кучи входных параметров, и он реально длинный, 400+ строк. Можно его разбить на кусочки и распихать по отдельным файлам, но это будет в ущерб целостности, т.к. эти куски по отдельности все равно не вызываются где-либо и не являются самостоятельными. Про легаси даже не заикаюсь - если меня например бесит что код не psr я могу пройтись по нему каким-нибудь php-cs-fixer и автоматом "причесать", но вот рефакторинг так не сделать к сожалению, а тратить свободное время себе дороже. Короче выбираешь меньшее из зол в итоге.

  • phpdude

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

    Spritz 16 октября 2015 г. 0:13, спустя 4 минуты 10 секунд

    @Nek, а ты клевый чувак оказывается, аватарку добавь а? :) у нас есть пыха-информатор, можешь поставить и быть в курсе новых тем :)

    Сапожник без сапог
  • Crank

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

    Spritz 16 октября 2015 г. 0:24, спустя 10 минут 53 секунды

    надо уметь писать код так, чтобы не больше 2 "страниц а4" кода было на файл. далеко не все так писать могут и далеко не все языки такое переварят адекватно, пхп может и раком встать )

    @phpdude, +

  • mathete

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

    Spritz 16 октября 2015 г. 1:05, спустя 40 минут 48 секунд

    надо писать код на платформах, которые уменьшают возможности говнокоденья. ваш кэп.

  • phpdude

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

    Spritz 16 октября 2015 г. 1:10, спустя 4 минуты 48 секунд

    надо писать код на платформах, которые уменьшают возможности говнокоденья. ваш кэп.

    @mathete, это ты про nodejs так тонко пошутил?))))))))

    Сапожник без сапог
  • mathete

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

    Spritz 16 октября 2015 г. 1:15, спустя 5 минут 38 секунд

    @phpdude, не, это я вообще сам с собой)) смотрю на с++ пиздец и на rust.

  • adw0rd

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

    Spritz 16 октября 2015 г. 2:13, спустя 57 минут 21 секунду

    не поощряет вызов контроллеров из других контроллеров

    @Nek, не, я про то что разбивать логические части на функции и вызывать их, а не другие контроллеры.
    Либо, если возможно, делать контроллеры максимально тонкими, по типу RESTful апи, чтобы каждый контроллер делал минимально возможное действие. Но опять таки если это возможно, т.к. я не знаю ваш проект

    adw/0

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