<rmcreative>

RSS

Все заметки с тегом «Yii2»

  1. Буду на UWDC 2014 в Челябинске

    4 апреля 2014

    Ориентировочно 30-го мая приеду на UWDC в Челябинск. Расскажу там про Yii 2.0. Доклад будет похож на РИТ++, но, как обычно, будет с улучшениями и поправками на прогресс в коде.

    Сайт конференции пока не запущен, но будет по адресу http://2014.uwdc.ru/. Следите.

    11 комментариев
  2. Yii2: PSR-2

    17 марта 2014

    Yii2 перешёл на использование стиля кода PSR-2. Война табов и пробелов не закончится никогда, но быть не как все и терять при этом поддержку инструментов для форматирования и совместимость с умолчаниями IDE не хочется.

    13 комментариев
  3. Yii2: изменения в работе с URL

    11 марта 2014

    Буквально несколько минут назад смёржил ветку с изменениями в работе с URL в основной репозиторий Yii2.

    Добавлен новый хелпер yii\helpers\Url и убраны:

    • yii\heplers\Html::url. Вместо него yii\helpers\Url::to.
    • yii\web\Controller::createUrl и yii\web\Controller::createAbsoluteUrl. Вместо них yii\helpers\Url::toRoute.
    • yii\web\Controller::getCanonicalUrl. Вместо него yii\helpers\Url::canonical.

    Пользоваться новым хелпером можно так:

    use yii\helpers\Url;
     
    echo Url::to(''); // текущий URL
     
    echo Url::toRoute(['view', 'id' => 'contact']); // тот же контроллер, другой экшн
    echo Url::toRoute('post/index'); // тот же модуль, другие контроллер и экшн
    echo Url::toRoute('/site/index'); // абсолютный роут вне зависимости от текущего контроллера
    echo Url::toRoute('hi-tech'); // URL для экшна в с регистрозависимым именем `actionHiTech` текущего контроллера
    echo Url::toRoute(['/date-time/fast-forward', 'id' => 105]); // URL для регистрозависимых экшна и контроллера `DateTimeController::actionFastForward`
     
    echo Url::to('@web'); // получаем URL из алиаса
     
    echo Url::canonical(); // получаем canonical URL для текущей страницы
    echo Url::home(); // получаем домашний URL
     
    Url::remember(); // сохраняем URL для последующего использования
    Url::previous(); // получаем ранее сохранённый URL
    44 комментария
  4. Yii2 дайджест новостей разработки #6 Март'14

    5 марта 2014

    Евгений Кузьминов выпустил дайджест новостей разработки Yii2. Как можно понять из «#6 Март'14», выпуск совсем не первый. Написан качественно и рекомендуется всем, кто интересуется Yii2.

    Читаем

    К сожалению, сейчас у разработчиков фреймворка практически не остаётся времени на какое-либо освещение разработки Yii2 и я очень рад, что Евгений продолжает делать это за нас. Спасибо!

    8 комментариев
  5. Yii2: вложенные транзакции

    16 февраля 2014

    Qiang добавил поддержку вложенных транзакций через savepoint-ы:

    // верхняя транзакция
    $transaction1 = $connection->beginTransaction();
    try {
        $connection->createCommand($sql1)->execute();
     
        // внутренняя транзакция
        $transaction2 = $connection->beginTransaction();
        try {
            $connection->createCommand($sql2)->execute();
            $transaction2->commit();
        } catch (Exception $e) {
            $transaction2->rollBack();
        }
     
        $transaction1->commit();
    } catch (Exception $e) {
        $transaction1->rollBack();
    }
    17 комментариев
  6. Yii2: batch

    15 февраля 2014

    При работе с большим количеством данных важно не использовать слишком много памяти. Сегодня Yii2 обзавёлся решением. Работает за раз не со всеми данными, а частями:

    use yii\db\Query;
     
    $query = (new Query)
        ->from('tbl_user')
        ->orderBy('id');
     
     
    foreach ($query->each() as $user) {
        // $user — одна строка из tbl_user
    }
     
    foreach ($query->batch(10) as $users) {
        // $users — массив из 10 строк
    }

    То же работает с Active Record:

    foreach (Customer::find()->batch() as $customers) {
        // $customers — массив из 10 или менее объектов Customer
    }
    26 комментариев
  7. Yii2 minimal

    2 февраля 2014

    Собрал ещё один шаблон для приложения Yii2. Сделан на основе basic, отличается от него минимально возможным количеством зависимостей:

    • Без bootstrap. Вместо него свой CSS, который подключается без использования asset-ов.
    • Без mailer и страницы контактов.
    • Без тестов и инструментов тестирования.
    • Без Gii и debug.

    https://github.com/samdark/yii2-minimal

    Данный шаблон рекомендуется тем, кто не любит boostrap и всё хочет делать сам. Если же это не про вас, лучше воспользоваться официальными basic или advanced.

    16 комментариев
  8. Yii2: PSR-4

    12 января 2014

    Yii2 перешёл с PSR-0 на недавно принятый PSR-4, благодаря чему из загрузчика классов удалось выкинуть кучу кода, теоретически сделав его быстрее (не замеряли). Также немного уменьшилась вложенность директорий официальных пакетов, что, хоть и не имеет большого значения, делает структуру чуть более простой.

    Если вы уже использовали Yii2 через Composer:

    1. Выполнить composer self-update.
    2. Правим пути в index.php, index-test.php и yii. Там нужно убрать один уровень /../.
    3. Удаляем всё кроме .gitignore из vendor и composer.lock, делаем заново composer install --prefer-dist.

    Ещё одна приятная штука, расширения теперь можно делать по-человечески, складывая классы прямо в корневую директорию репозитория.

    17 комментариев
  9. Yii2: JOIN вернулся

    8 января 2014

    В Active Record Yii2 вернулся JOIN. Внутри всё значительно проще, чем было в Yii 1.1, но возможностей сильно больше.

    Сразу скажу, что поддержка noSQL никуда не делась. Более того, можно в одном «запросе» выбрать JOIN-ом из нескольких SQL-таблиц, а часть связанных данных забрать, например, из MongoDB.

    Отличный пример привёл ORey на англоязычном форуме:

    // Выбираем MyModel с relation1 и relation2.
    // Все три забираем запросом с JOIN.
    $query = MyModel::find()
        ->joinWith(['relation1', 'relation2']);
     
    $countQuery = clone $query;
    $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 15]);
     
    $items = $query
        ->orderBy($sort->orders)
        ->offset($pages->offset)
        ->limit($pages->limit)
        // Забираем дополнительно relation3 и relation4.
        // Фильтровать по ним нам не нужно, так что будут
        // запросы вида WHERE ID IN (1,2,3,4) или аналоги
        // для noSQL.
        ->with(['relation3', 'relation4'])
        ->all();

    Официальная документация на тему

    25 комментариев
  10. Уменьшаем yii2-basic

    7 января 2014

    В почту прилетел вопрос «какого такого yii2-basic весит 180 мегабайт». Вопрос хороший. Разберём и попробуем разобраться, что же с этим всем делать, если размер критичен.

    Итак, 155 мегабайт занимают данные git, которые забираются при установке из composer без флага --prefer-dist (добавил его в readme). Осталось 25 мегабайт, что тоже немало.

    Из них:

    Yii + обязательные зависимости 4,9 мб
    debug-панель и gii 235 кб
    Twitter Bootstrap 4,5 мб
    Swiftmailer 6,2 мб
    Codeception и зависимости 8,6 мб

    Если нам не нужны какие-то пакеты, правим composer.json и удаляем оттуда ненужные нам пакеты (секции require и require-dev). Удаляем composer.lock и запускаем composer install --prefer-dist.

    Например, если нам не интересно автоматизированное тестирование, путём удаления из зависимостей Codeception получаем 16 мегабайт вместе с зависимостями и самим basic-шаблоном. При этом приложение остаётся полностью рабочим.

    Если в приложении не нужна работа с почтой и Twitter Bootstrap получим 5,3 мегабайта.

    UPD: доступен минимальный шаблон приложения без тяжёлых компонентов.

    4 комментария