<rmcreative>

RSS

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

  1. 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
    }
    20 комментариев
  2. Yii2 minimal

    2 февраля 2014

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

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

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

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

    16 комментариев
  3. 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 комментариев
  4. 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();

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

    24 комментария
  5. Уменьшаем 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 комментария
  6. Yii 2 alpha

    2 декабря 2013

    Вышла первая альфа версия Yii 2. Скачать в виде архива её можно с официального сайта. Там же приведены инструкции по установке через Composer.

    Yii 2 является полностью переделанной версией одного из самых популярных PHP-фреймворков. В новой версии унаследован общий дух первой версии, а именно стремление к простоте, скорости и расширяемости. В Yii 2 применяются многие возможности PHP 5.4. Фреймворк следует лучшим практикам современной веб-разработки.

    Полное описание возможностей вы можете найти в полном руководстве и, в особенности в разделе с отличиями от версии 1.1.

    Выпуск альфы является важным событием в разработке Yii 2 и означает, что код достиг определённой степени стабильности. Если вы только начинаете изучать Yii или у ваш проект не ограничен жёсткими временными рамками, можно попробовать новую версию. Не используйте Yii 2 в боевых проектах так как команда фреймворка всё ещё может внести значительные изменения без каких-либо предварительных уведомлений.

    В течение двух лет было получено огромное количество кода от сообщества. Спасибо вам, что сделали этот релиз возможным.

    29 комментариев
  7. Yii2 будет на PHP 5.4

    20 октября 2013

    Ещё недавно я рассказывал про то, что Yii2 будет использовать PHP 5.3, и вот планы круто поменялись. После публичного обсуждения, а затем и внутрикомандного, было решено, что релиз состоится с минимальным требованием PHP 5.4.

    Сначала мы составили список популярных хостингов. После этого стало понятно, что 72% хостингов, которые поддерживают минимальную на тот момент версию 5.3.7, поддерживают и 5.4. А те, что принципиально застряли на 5.2 или 5.3, чаще всего не имеют и 5.3.7. С операционками выходит примерно так же.

    Далее пошли в ход плюсы.

    Короткий синтаксис массивов и <?= в шаблонах. Да, для фреймворка оно не нужно и это долгое время было аргументом против 5.4. Но мы изначально упустили из вида, что авторам расширений придётся использовать 5.4, что негативно скажется на сообществе.

    В 5.3 более не исправляется, начиная с этого Июля. В Июле 2014 PHP 5.3 перестанет получать также и исправления по части безопасности, так что использовать его будет довольно рисково. К тому времени Yii2, как раз, должен начать набирать обороты и если сейчас переход на 5.4 кажется немного рисковым, то через пол года это точно будет верным шагом. Да и с точки зрения маркетинга шаг верный.

    Ну и трейты, конечно. Хотя на их счёт ещё есть большие сомнения...

    40 комментариев
  8. Yii2: перевод сообщений

    17 октября 2013

    Доделали полностью перевод сообщений. В Yii2 он намного лучше, чем в 1.1. Удалось выкинуть мегабайты данных CLDR и использовать вместо всего этого расширение intl. Синтаксис и возможности поразительные. Например, можно вот так:

    echo \Yii::t('app', '{n,number} is spelled as {n, spellout}', array(
        'n' => 42,
    ));

    При переводе эта строка честно выдаст нам 42 проговаривается как сорок два.

    echo \Yii::t('app', '{name} is {gender} and {gender, select, female{she} male{he} other{it}} loves Yii!', array(
        'name' => 'Snoopy',
        'gender' => 'dog',
    ));

    Выдаст без перевода Snoopy is dog and it loves Yii!.

    Множественные формы также никуда не делись:

    echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
        'n' => 0,
    ));

    Строка перевода будет вот такая:

    Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
    

    Не обошлось, правда, без исследования исходника расширения и исправления найденных багов средствами PHP, но результат радует.

    22 комментария
  9. Первый production-проект на Yii2

    18 июля 2013

    Несмотря на то, что Yii2 ещё даже не бета, появился первый известный мне production-проект на нём.

    Самая идея — сервис для печати изображений по постерам, холстам, футболкам и т.д. У сервиса отличный дизайн, работает шустро. Имеется REST API.

    Рассматриваем

    12 комментариев
  10. Черновики документации Yii2

    4 июля 2013

    Код Yii2 начал более-менее стабилизироваться. Это означает, что пора писать руководство, чем мы и занялись на этой неделе.

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

    17 комментариев