Я не подумал о подключении зависимостей через контейнер. Спасибо, это достаточно элегантное решение. По поводу $this->hasMany - конечно там модель должна наследовать от ActiveRecord, это я по инерции написал.
IvanTomov: я понял вашу проблему. У меня нет под рукой такого кейса. Я бы порекомендовал посмотреть через DevTools браузера, если включить там протоколирование трафика. Просто воткните валидный яваскрипт, который дернет Метрику в момент сабмита заказа, и посмотрите, что сабмитится в Метрику.
safenoob: $_SESSION также хранит данные персистентно - в /tmp (us.php.net/manual/en/session.configuration.php#ini... Но такая схема не подходит, если проект живет в нескольких дата-центрах. Сессия, созданная в одном дата-центре в другом не валидируется. Разве что как-то расшаривать /tmp, но это извращение.
safenoob: чтобы иметь персистентное хранение с минимальным оверхедом на чтение-запись. sql все-таки не лучший вариант хранения сессий при заметной нагрузке.
WeReng: фикстуры (см ActiveFixture) в основном используются при тестировании. Я их также использую, чтобы наполнить базу тестовыми данными, например для движка интернет-магазина создать тестовые товары, заказы, клиентов итп. При этом значения (цены, имена, емейлы итп) рандомные, генерируются через Faker. Сами данные хранятся в виде массива. Для загрузки я сделал отдельный экшн в ConsoleController и там же модель, которую дергает этот экшн.
Это достаточно нудное занятие - написать все фикстуры, при этом соблюдая зависимости (например, не может быть заказа без корзины), но выручало меня это уже много раз.
Что является критериями достаточности? Отсутствие возможности исполнять загруженный код? Наличие возможности отображать загруженные файлы в теге img? Еще что-то?
matperez: спасибо! И тем не менее меня не покидает ощущение, что такой подход чем-то оправдан, тк опять же я его вижу время от времени. :) Но я не могу представить ситуацию из реального мира, где это может быть применено.
Александр Макаров: А lastInsertID не попахивает антипаттерном, если речь идет о мульти-мастер БД, например? Ведь в такой архитектуре нет стопроцентной уверенности, что lastInsertID вернет именно тот $personId, который был добавлен строкой выше.
matperez: не понятно зачем инициализировать зависимость через фабрику, если это можно сделать напрямую в методе, который вызывает конструктор класса, использующего зависимость? Я достаточно часто вижу такой подход, но мне не очень понятна логика, которая за ним стоит.
Nikolaymac: ActiveForm хорошо подходит для простых форм, тесно связанных с атрибутами модели. Это, если угодно, аналог form_for из мира RoR. Плюс-минус сложные формы скорее всего потребуют HtmlForm.