<rmcreative>

RSS

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

Можно уточнить:

  1. Когда уместен Active Record в Yii 2

    22 июля 2016

    В комментариях к посту про модули Дмитрий задал вопросы про AR.

    Объем записей в таблицах от 500к, почти каждый запрос это 2-3 JOINa. Раньше делал через геттеры AR, выборка за раз порядка 100 записей. Но заметил такую штуку, что если использовать createCommand, то память заметно меньше расходуется и скорость быстрее. К сожалению, сейчас не могу показать реальные тесты, так как тестировали это месяц назад, но в итоге, большую часть моделей мы переписали на DAO, отказавшись от AR.

    Память уходит на хранение данных в объектах. Скорость теряется из за необходимости эти объекты инстанциировать.

    Так, так ли плох AR или его использование подходит для небольших проектов? У нас также постоянно идет вставка, порядка 5000 записей в час. Пока для этого используем AR.

    Когда использование AR уместно, а когда нет?

    AR отлично подходит для удаления, обновления или добавления небольшого количества записей по одной за раз. Чрезвычайно удобно. К тому же, поддержка dirty attributes, то есть сохранения только того, что изменилось, позволяет хорошо разгрузить базу данных и скрыть до лучших времён многие моменты при параллельном редактировании. Если у вас в приложении нет сильно сложной логики и не требуется дополнительных абстракций для сущности, то AR для этого подходит идеально.

    Для простых выборок с целью отображения до сотни записей на страницу, в принципе, AR тоже подходит. Да, с массивами через query builder или с asArray() получается быстрее и меньше кушает памяти, но работать с ними не столь удобно.

    Для сложных выборок AR не рекомендуется. Сложные выборки у нас обычно возвращают какие-либо агрегаты или преобразованные данные, которые ну никак не вписываются в изначальную модель AR. В этом случае лучше делать выборки через query builder.

    Для импорта-экспорта также лучше использовать query builder.

    17 комментариев
  2. Yii 2.0.9

    11 июля 2016

    Релизнули Yii 2.0.9. Анонс можно прочитать на хабре.

    Выпустили немного раньше запланированного. Ничего сверхважного при этом на следующий релиз не перекинули, что, по-моему, прекрасно.

    4 комментария
  3. Встреча Intellectsoft по Yii 2, Codeception и тестированию в Киеве

    5 июля 2016

    13 июля Intellectsoft с 18:00 по 22:00 организуют встречу по Yii 2, Codeception и тестированию. Пройдёт она по адресу Киев, Лейпигская 15, БЦ MERX-2. Встречу ведёт Михаил Бондарчук, автор Codeception.

    Читаем

    12 комментариев
  4. Как получить mock из ActiveRecord

    5 июля 2016

    На тостере в комментариях к вопросу спросили, как получить mock ActiveRecord, чтобы он не пытался лезть в базу и возможно ли.

    Возможно. В случае PHPUnit делается так:

    $post = $this->getMockBuilder('\app\model\Post')
        ->setMethods(['save', 'attributes'])
        ->getMock();
    $post->method('save')->willReturn(true);
    $post->method('attributes')->willReturn([
        'id',
        'status',
        'title',
        'description',
        'text'
    ]);

    Особенность заключается в том, что перекрыть надо ещё и метод attributes() потому как ActiveRecord лезет за схемой в базу данных, что нам не нужно.

    5 комментариев
  5. Вышел официальный HTTP клиент для Yii 2

    1 июля 2016

    Выпустили официальное расширение-клиент HTTP. Написано почти целиком Павлом Климовым. До последнего времени не было тегнуто как релиз из за несовместимости с PSR-7, хотя уже много где использовалось. После долгих обсуждений всё-таки решили выпускать без PSR-7. К нему, возможно, вернёмся в 2.1.x.

    Выполнение HTTP запроса выглядит вот так:

    use yii\httpclient\Client;
     
    $client = new Client();
    $response = $client->createRequest()
        ->setMethod('post')
        ->setUrl('http://example.com/api/1.0/users')
        ->setData(['name' => 'John Doe', 'email' => '[email protected]'])
        ->send();
    if ($response->isOk) {
        $newUserId = $response->data['id'];
    }

    https://github.com/yiisoft/yii2-httpclient

    11 комментариев
  6. Выпущена версия 2.1.0 расширения для MongoDB

    27 июня 2016

    Выпущена версия 2.1.0 расширения для MongoDB, которая использует новый драйвер MongoDB . Расширение отлично работает с PHP 7.x и HHVM.

    Данная версия не совместима с 2.0.x, поэтому стоит сначала прочитать UPGRADE и обновить свой код.

    Если вы хотите остаться на 2.0.x, удостоверьтесь, что в вашем composer.json версия указана как ~2.0.5. Подробнее о версиях можно узнать из документации Composer.

    Кроме нового драйвера в данной версии есть и некоторые улучшения, такие как пакетное чтение и пакетная запись данных. Подробнее о них можно узнать из CHANGELOG.

    8 комментариев
  7. Хакатон по Yii Framework в TACC, отчёт

    25 июня 2016

    Оформил отчёт о хакатоне по Yii, который прошёл в ТАСС 18 и 19 июня. Всё прошло как нельзя лучше несмотря на то, что особых приготовлений с моей стороны не было — был в отпуске. ТАСС — молодцы. Если подготовить заранее чёткий план работ — будет ещё лучше.

    Читаем на хабре

    Комментировать
  8. Модули Yii

    15 июня 2016

    Модули Yii существуют для решения двух задач:

    1. Группировка похожих функций приложения.
    2. Изоляция функций для их последующего использования в других проектах.

    Когда команда Yii думала над модулями, задача рассматривалась целиком: то есть и группировка и изоляция. Но как только сообщество начало использовать модули, оказалось, что используются они, в основном, для группировки.

    Оно и понятно: нормальную изоляцию сделать тяжело. Модуль не должен в этом случае использовать что-либо извне напрямую. Если что-либо необходимо, модуль предоставляет интерфейс, который реализуется в приложении, использующем модуль. То же применимо и к обратной ситуации: извне использовать что-либо из модуля напрямую строго запрещено: только через интерфейс.

    15 комментариев
  9. DevConf:: Хакатон по Yii в ТАСС 18-19 июня 2016

    27 мая 2016

    18-19 июня сразу после DevConf 2016 ТАСС проводит хакатон по Yii. Я обязательно буду.

    Участие бесплатно, но надо обязательно записаться.

    Подробности на хабре

    4 комментария
  10. Небольшое интервью про меня, DevConf и Yii

    19 мая 2016

    Адель Файзрахманов, один из организаторов DevConf провёл со мной небольшое интервью. Результат опубликован текстом на хабре.

    https://habrahabr.ru/company/devconf/blog/301114/

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