Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
ppokrovsky

Paulus

  • 17
    вклад
  • 2
    вопроса
  • 23
    ответа
  • 39%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как работает MVC controller?

    ppokrovsky
    Paulus @ppokrovsky
    billya: прямой ответ - нет. Но если Вы опишете решаемую задачу, возможно есть решение.
    Написано более трёх лет назад
  • Подход к реализации DI в проектах Yii2 - правильно или не очень?

    ppokrovsky
    Paulus @ppokrovsky Автор вопроса
    На самом деле какой-то геморройный подход, ну или я что-то не понимаю.

    Инициализация объекта через `Yii::createObject()` это ок, понятно, но, например, конструкция:
    ```php
    namespace common\models;

    class Product
    {
    protected $repository;

    public function __construct(ProductRepository $repository, $config = [])
    {
    $this->repository = $repository;
    }
    }

    // здесь инициализируется common\models\Product с установленными зависимостями
    $productModel = \Yii::createObject('common\models\Product');

    /** var yii\db\ActiveQuery $query */
    $query = $productModel::find();

    // а вот здесь бросится исключение про отсутствующий ProductRepository
    $products = $query->all();
    ```

    Ну то есть в итоге ни себе, ни людям. Вроде как и DI, и вроде как все равно файндеры через статический вызов делать.

    Ну или я что-то совсем не понимаю?
    Написано более трёх лет назад
  • Подход к реализации DI в проектах Yii2 - правильно или не очень?

    ppokrovsky
    Paulus @ppokrovsky Автор вопроса
    Я не подумал о подключении зависимостей через контейнер. Спасибо, это достаточно элегантное решение. По поводу $this->hasMany - конечно там модель должна наследовать от ActiveRecord, это я по инерции написал.
    Написано более трёх лет назад
  • Подход к реализации DI в проектах Yii2 - правильно или не очень?

    ppokrovsky
    Paulus @ppokrovsky Автор вопроса
    Алексей Скобкин: Потому что производительность?
    Написано более трёх лет назад
  • Подход к реализации DI в проектах Yii2 - правильно или не очень?

    ppokrovsky
    Paulus @ppokrovsky Автор вопроса
    Алексей Скобкин: в зависимости реализован тот же подход.
    Написано более трёх лет назад
  • Запрос в Яндекс Метрику ecommerce c параметрами оплаченного заказа через curl?

    ppokrovsky
    Paulus @ppokrovsky
    IvanTomov: я понял вашу проблему. У меня нет под рукой такого кейса. Я бы порекомендовал посмотреть через DevTools браузера, если включить там протоколирование трафика. Просто воткните валидный яваскрипт, который дернет Метрику в момент сабмита заказа, и посмотрите, что сабмитится в Метрику.
    Написано более трёх лет назад
  • Как правильно сделать сессии и авторизацию на PHP?

    ppokrovsky
    Paulus @ppokrovsky
    safenoob: $_SESSION также хранит данные персистентно - в /tmp (us.php.net/manual/en/session.configuration.php#ini... Но такая схема не подходит, если проект живет в нескольких дата-центрах. Сессия, созданная в одном дата-центре в другом не валидируется. Разве что как-то расшаривать /tmp, но это извращение.
    Написано более трёх лет назад
  • Как правильно сделать сессии и авторизацию на PHP?

    ppokrovsky
    Paulus @ppokrovsky
    safenoob: чтобы иметь персистентное хранение с минимальным оверхедом на чтение-запись. sql все-таки не лучший вариант хранения сессий при заметной нагрузке.
    Написано более трёх лет назад
  • Как правильно работать с базой данных yii2?

    ppokrovsky
    Paulus @ppokrovsky
    WeReng: фикстуры (см ActiveFixture) в основном используются при тестировании. Я их также использую, чтобы наполнить базу тестовыми данными, например для движка интернет-магазина создать тестовые товары, заказы, клиентов итп. При этом значения (цены, имена, емейлы итп) рандомные, генерируются через Faker. Сами данные хранятся в виде массива. Для загрузки я сделал отдельный экшн в ConsoleController и там же модель, которую дергает этот экшн.

    Это достаточно нудное занятие - написать все фикстуры, при этом соблюдая зависимости (например, не может быть заказа без корзины), но выручало меня это уже много раз.
    Написано более трёх лет назад
  • Как сослаться в миграциях Yii2 на инсёрты из кода выше?

    ppokrovsky
    Paulus @ppokrovsky
    Александр Макаров: а на какие тогда завязываться? если реплики неконсистентны в моменте - любая проверка уникальности не будет достоверной.
    Написано более трёх лет назад
  • Проверка type файлов достаточно ли?

    ppokrovsky
    Paulus @ppokrovsky
    Что является критериями достаточности? Отсутствие возможности исполнять загруженный код? Наличие возможности отображать загруженные файлы в теге img? Еще что-то?
    Написано более трёх лет назад
  • Как тестировать методы, создающие объекты других классов?

    ppokrovsky
    Paulus @ppokrovsky
    matperez: резонно. про сценарии с js я не думал. спасибо!
    Написано более трёх лет назад
  • Как тестировать методы, создающие объекты других классов?

    ppokrovsky
    Paulus @ppokrovsky
    matperez: спасибо! И тем не менее меня не покидает ощущение, что такой подход чем-то оправдан, тк опять же я его вижу время от времени. :) Но я не могу представить ситуацию из реального мира, где это может быть применено.
    Написано более трёх лет назад
  • Как сослаться в миграциях Yii2 на инсёрты из кода выше?

    ppokrovsky
    Paulus @ppokrovsky
    Александр Макаров: А lastInsertID не попахивает антипаттерном, если речь идет о мульти-мастер БД, например? Ведь в такой архитектуре нет стопроцентной уверенности, что lastInsertID вернет именно тот $personId, который был добавлен строкой выше.
    Написано более трёх лет назад
  • Как тестировать методы, создающие объекты других классов?

    ppokrovsky
    Paulus @ppokrovsky
    matperez: не понятно зачем инициализировать зависимость через фабрику, если это можно сделать напрямую в методе, который вызывает конструктор класса, использующего зависимость? Я достаточно часто вижу такой подход, но мне не очень понятна логика, которая за ним стоит.
    Написано более трёх лет назад
  • Как тестировать методы, создающие объекты других классов?

    ppokrovsky
    Paulus @ppokrovsky
    matperez, подскажите пожалуйста, почему Вы инициализируете Bar именно через фабрику?
    Написано более трёх лет назад
  • В чем разница между ActiveForm и Html Form yii2?

    ppokrovsky
    Paulus @ppokrovsky
    Nikolaymac: ActiveForm хорошо подходит для простых форм, тесно связанных с атрибутами модели. Это, если угодно, аналог form_for из мира RoR. Плюс-минус сложные формы скорее всего потребуют HtmlForm.
    Написано более трёх лет назад
  • Yii - как в init() передать параметры через конструктор?

    ppokrovsky
    Paulus @ppokrovsky
    ColdSpirit: init() не принимает параметры, поэтому либо через какой-то глобальный объект, либо так, как ответил Arik - это более правильный способ.
    Написано более трёх лет назад
  • Yii2, почему не работает search model?

    ppokrovsky
    Paulus @ppokrovsky
    Anchor00: покажите класс ProductSearch (если использовали Gii то ProductSearch.php)
    Написано более трёх лет назад
  • Yii2: Как выполнить добавление в одну таблицу с включенным режимом транзакции?

    ppokrovsky
    Paulus @ppokrovsky
    Артём: тогда нужно добавить генерацию исключений, например if (!$this->save()) { throw new \Exception('Something went wrong'); }
    Написано более трёх лет назад
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • Drno
    • 6 ответов
    • 0 вопросов
  • Justa Gain
    • 5 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 5 ответов
    • 0 вопросов
  • scoffs
    Семён Окулов
    • 5 ответов
    • 0 вопросов
  • Debian KDE
    • 2 ответа
    • 2 вопроса
  • delphinpro
    Сергей delphinpro
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации