Dmitriy
и мы знаем какой перед нами dto
Иван
так прячут гидрацию то в репозитории
именно, но гидрация внутри репозитория для того, чтоб создать сущность! Пример: У нас есть User, и чтоб его вытащить из допустим бд - нам надо запросить его из UserRepository, который вернет сущность (или агрегат) типа User. Допустим из UserRepository ты получаешь DTO, предварительно сгидрировав его внутри. Тогда для получения сущности User тебе надо из DTO выполнить вторую гидрацию, которая уже получается будет вне репозитория. Куда выносить тогда этот копипаст? Зачем усложнять этим себе жизнь, если репозиторий сразу может нагидрировать внутри User?
Иван
DTO настолько я понимаю нужен только если между слоями пирога надо передать данные
Иван
там вообще теряется вся прелесть репозиториев. я про пример на сайте. это или переходной этап или автор что-то делает не то.
Почему теряется? Там есть интерфейс репозитория конкретной сущности, имплементировать который может любая реализация. Считаю это как раз таки "правильным" репозиторием по DDD
Dmitriy
и репозиторий возвращает AR
Dmitriy
и мы передаем AR что бы сохранить его
Иван
потому что Employee жестко привязан к AR
Да, согласен, там есть у сущности инфраструктурная зависимость от AR, но это скорее компромис) В слое бизнес логики ты напрямую не дергаешь save() активрекордовский, а сохраняешь сущность через репозиторий, который по сути интерфейс. Тесты тоже AR не трогают, а тестируют лишь логические методы сущности. Чтоб избавиться от AR тебе надо убрать наследование, и удалить инфраструктурные методы типа afterFind()и прочие, которые по коду лежат рядом. Другое дело, что этот AR там осознанно, дабы скрестив ужа с ежом получить выгоды фич фреймворка, не размазывая логику приложения, а используя DDD. Я думал над тем, чтоб не использовать AR конкретно тут, хотел впилить Doctrine. Но решил, попробовать именно этот подход в этом проекте, хочешь не хочешь - а в Yii2 именно AR в коробке
Vladislav
Привет пипл
Vladislav
я тут на опен сервер короче и...
Vladislav
what the fack is this
Иван
я тут на опен сервер короче и...
pdo extension не установлен на твоем опен сервере http://yiiframework.ru/forum/viewtopic.php?t=42094
Vladislav
дык это только на этом проекте что самое интересное
Vladislav
от чего это может зависить?
Vladislav
без него работало потом оп внезапно у тебя pdo не установленно
Иван
Попробуй запустить php requirements.php
Vladislav
Could not open input file: requirements.php
Vladislav
PDO extension: OK
Dmitriy
Да, согласен, там есть у сущности инфраструктурная зависимость от AR, но это скорее компромис) В слое бизнес логики ты напрямую не дергаешь save() активрекордовский, а сохраняешь сущность через репозиторий, который по сути интерфейс. Тесты тоже AR не трогают, а тестируют лишь логические методы сущности. Чтоб избавиться от AR тебе надо убрать наследование, и удалить инфраструктурные методы типа afterFind()и прочие, которые по коду лежат рядом. Другое дело, что этот AR там осознанно, дабы скрестив ужа с ежом получить выгоды фич фреймворка, не размазывая логику приложения, а используя DDD. Я думал над тем, чтоб не использовать AR конкретно тут, хотел впилить Doctrine. Но решил, попробовать именно этот подход в этом проекте, хочешь не хочешь - а в Yii2 именно AR в коробке
Просто не понимаю зачем тогда вообще нужен этот репозиторий . Раз мы не используем тут гидраторы, декораторы.... Просто его юзать как свалку запросов ? догда не нужны это всякие интефейсы. попытки слепить DTO и AR.
Dmitriy
what the fack is this
коннект бы проверить к бд
Vladislav
да вроде верен я подрубаюс к локалхосту
Vladislav
могу к нему подрубится через Workbench
Niko
what the fack is this
у меня такое было когда я забывал xampp включить. проверь все ли компоненты сервера ты включил (например apache + mysql)
Иван
Просто не понимаю зачем тогда вообще нужен этот репозиторий . Раз мы не используем тут гидраторы, декораторы.... Просто его юзать как свалку запросов ? догда не нужны это всякие интефейсы. попытки слепить DTO и AR.
затем, чтобы инкапсулировать всю работу с бд (или иным хранилищем) в реализации репозитория. В проекте через DI используется репозиторий, дергающий внутри AR, для тестов подменяешь реализацию с AR на репозиторий - заглушку
Иван
what the fack is this
сделай скрин нижней половины эксепшена
Niko
у меня так ничего не видно
Юрий
Niko
та да)))
Vladislav
скачать посмотреть удалить - сложновато)
Иван
скачать посмотреть удалить - сложновато)
его видать телега пережала)
Иван
вот что видишь, если приближаешь скачанный
Ivan
вкуда она его пережала
Иван
попробуй как документ приложить, а не как фото
Vladislav
нижняя половина
Иван
еще плз скрин, между п.1 и п.15 вне зоны
Vladislav
Иван
к сожалению по трейсу более ничего не сказать. Если ты утверждаешь, что рядом сайты на yii2 работают, то тогда стоит проверить тщательно опечатки реквизитов подключения
Vladislav
делаю одинаковые подключения и один работает а именно этот нет
Vladislav
я без понятия
Vladislav
придётся создавать заново проект и кусками вставлять из старого в новый чтобы разобраться что с ним
Иван
начни тогда с реквизитов подключения
Evgenij
Всем привет.В 2.0.13 В классе BaseActiveRecord метода instantiate($row) сдеали изменение с return new static; на return new static(); Что это менят в создании классов добавление скобочек к static ?
Evgenij
какой тогда смысл был в изменении ?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Поправили косяк
Alexey
так семантически правильнее
Evgenij
Какой смысл заворачивать в транзакцию вставку данных, в методе ActiveRecord::insert(), при этом в update транзакция отсутствует?
Alexey
смотря какой проект
Vladislav
Добрый день всем. Я на yii через композер подключил пакет PHPOffice/PHPWord, но при подключении не видит класс. В чем может быть проблема?
Vladislav
я в контроллере прописал use phpoffice\phpword; и в самом экшене пытаюсь создать объект $word = new PhpWord();
Vladislav
выдаёт Class 'phpoffice\phpword' not found
Alex
phpoffice\phpword\PhpWord
Alex
мож так?
Alex
ну или как там в репе
Vladislav
https://github.com/PHPOffice/PHPWord
Alex
\PhpOffice\PhpWord\PhpWord
🎅
Пхаха)
Alex
Вот так
Alex
А вообще юзай иде)
Alex
А главное читай доку) $phpWord = new \PhpOffice\PhpWord\PhpWord();
Evgenij
Я правильно понимаю, если у нас происходит вставка или обновление данных внутри своей транзакции, то транзакция в методе insert или update просто не закоммиться ?
Павел
Документацию читают тока ламеры жи
Vladislav
спасибо большое)
Evgenij
Если выполняется вышестоящая транзакция, внутренние не будут коммититься, там есть атриубут $_level в классе Transaction
D
привет ! кто-нибудь юзал deployer.org для деплоя yii2 advanced?
Alex
мне кажется что галпом удобнее
Evgenij
Где дурь берёшь, поделись
Я хочу использовать в приложении ивент Connection::EVENT_COMMIT_TRANSACTION, для этого и хочу разобраться как в yii реализованы транзакции
Павел
Так исходники открыты
Павел
И зачем тебе этот ивент?
Evgenij
Отправлять данные которые гарантированно закомитились , те сохранились
Alex
final не?
Павел
Отправлять данные которые гарантированно закомитились , те сохранились
Если транзакция успешна то все данные гарантировано сохранились