Size: a a a

2020 July 10

AM

Alexander Makarov in Yii Framework 3
Но это уже другой вопрос...
источник

ZP

Zhenya Panin in Yii Framework 3
Alexander Makarov
Не всё, правда, что он подавал как правильное, стоит всегда делать.
Это вроде DDD называется, чему он учил на курсе!
источник

T

TradersVE in Yii Framework 3
Zhenya Panin
Вообщем, получается, что, если делать примерно, как учил Дмитрий на этом курсе - https://github.com/ElisDN/yii2-demo-shop , т.е. код делить на репозитории, сервисы и сущности, то его можно легко перенести с Yii2 на yii3? Все верно, ребята?
Yes.
источник

ZP

Zhenya Panin in Yii Framework 3
TradersVE
Yes.
Good
источник

AM

Alexander Makarov in Yii Framework 3
Zhenya Panin
Это вроде DDD называется, чему он учил на курсе!
Элементы DDD...
источник

AM

Alexander Makarov in Yii Framework 3
Хорошие, в общем, приёмы.
источник

T

TradersVE in Yii Framework 3
For example: 1. Entity/ActiveRecord, Repository, Service work for me.
источник

AM

Alexander Makarov in Yii Framework 3
На определённом масштабе проекта помогают.
источник

AM

Alexander Makarov in Yii Framework 3
TradersVE
For example: 1. Entity/ActiveRecord, Repository, Service work for me.
Yep.
источник

ZP

Zhenya Panin in Yii Framework 3
Alexander Makarov
На определённом масштабе проекта помогают.
Т.е. не помогут, если проект очень сильно большой?
источник

T

TradersVE in Yii Framework 3
For example, and inject UserRepository in Service or Controller.

$container->set(
    UserRepository::class,
   static fn (ContainerInterface $container) => new UserRepository(
               $container->get(User::class),
               new UserQuery(User::class)
   )
);
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
забавно.. помогите разобраться.. я ради интереса заставил работать этот WebActionsCaller  вот так:
Route::anyMethod('/profile/{action:\w+}', function (Psr\Container\ContainerInterface $container) {
       $injector =  new \Yiisoft\Injector\Injector($container);
       return $injector->make(WebActionsCaller::class,['class' => ProfileController::class]);
   })->name('profile')

Всё работает, НО! теперь на строчке:
$currentUrl = $url->generate($urlMatcher->getCurrentRoute()->getName());

выскакивает ошибка: Route profile expects at least parameter values for [action], but received [], хотя урл выглядит так: /profile/email
И все проще можно

Route::anyMethod('/profile/{action:\w+}', function (Psr\Container\ContainerInterface $container) {
   return new WebActionsCaller(ProfileController::class, $container);
})->name('profile')
источник

Д

Дмитрий in Yii Framework 3
Zhenya Panin
Т.е. не помогут, если проект очень сильно большой?
помогут при любом размере проекта.
просто можно взять и навалить кучу, а можно всегда держать в тонусе :)
источник

AM

Alexander Makarov in Yii Framework 3
Zhenya Panin
Т.е. не помогут, если проект очень сильно большой?
И если мелкий тоже.
источник

AM

Alexander Makarov in Yii Framework 3
Очень сильно, как правило, разъезжается на несколько серваков и там уже мало этого.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
И все проще можно

Route::anyMethod('/profile/{action:\w+}', function (Psr\Container\ContainerInterface $container) {
   return new WebActionsCaller(ProfileController::class, $container);
})->name('profile')
@viperawa во, вот так надо в доке.
источник

AM

Alexander Makarov in Yii Framework 3
Alexander Makarov
Очень сильно, как правило, разъезжается на несколько серваков и там уже мало этого.
А в мелких это слишком сложно.
источник

Д

Дмитрий in Yii Framework 3
Alexander Makarov
@viperawa во, вот так надо в доке.
сейчас сделаю pr
источник

Д

Дмитрий in Yii Framework 3
только вот WebActionsCaller же выпиливать собрались?)
источник

T

TradersVE in Yii Framework 3
Dmitriy S
И все проще можно

Route::anyMethod('/profile/{action:\w+}', function (Psr\Container\ContainerInterface $container) {
   return new WebActionsCaller(ProfileController::class, $container);
})->name('profile')
Route::anyMethod(
   '/profile/{action:\w+}',
   fn (Psr\Container\ContainerInterface $container) => new WebActionsCaller(
       ProfileController::class,
       $container
   )
)->name('profile');
источник