Size: a a a

2020 August 08

AM

Alexander Makarov in Yii Framework 3
Алексей R
в IdentityRepositoryInterface есть метод findIdentityByToken(string $token, string $type): ?IdentityInterface;
Почему $type не опциональный параметр?
Был. blame сделай - узнаешь.
источник

AM

Alexander Makarov in Yii Framework 3
А. не. Не был.
источник

AM

Alexander Makarov in Yii Framework 3
Хм...
источник

AM

Alexander Makarov in Yii Framework 3
тебе нужен вообще этот параметр?
источник

AM

Alexander Makarov in Yii Framework 3
Кстати, я релизнул Yii 2. Могу заняться плотно Yii 3. Пару дней точно. Чего сейчас больше всего нехватает?
источник

Д

Дмитрий in Yii Framework 3
@samdark сделаешь репку для интеграции yii3 с sentry?

кстати, еще есть идея делать вставки обязательных параметров из пакетов в юзерские конфиги после установки расширений.
например, для сентри нужен dsn. делаем composer req yii-sentry и к config/params.php в самый низ прилетает 'yii-sentry' => ['dsn' => null]
а-ля symfony/recipe
источник

Д

Дмитрий in Yii Framework 3
еще круто было бы построить config-validator на основе yiisoft/validator.
вендроские конфиги покрыть проверками и проверку реализовать через отдельную консольную команду.
источник

Д

Дмитрий in Yii Framework 3
или воткнуть сразу внутрь Builder::rebuild()
источник

А

Алексей R in Yii Framework 3
Alexander Makarov
тебе нужен вообще этот параметр?
Мне как раз он и не нужен и было бы норм если бы он был опциональным. А то отправлять пустую строку без надобности так себе
источник

СП

Сергей Предводителев... in Yii Framework 3
Я всё пытаюсь разделить админку и основной сайт, но ничего умнее, чем сделать это через разные точки входа со своими контейнерами не придумывается :(

Но чтобы это сделать нужно переопределять $params в конфигах. Может всё таки подумать про этот issue?
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
@samdark сделаешь репку для интеграции yii3 с sentry?

кстати, еще есть идея делать вставки обязательных параметров из пакетов в юзерские конфиги после установки расширений.
например, для сентри нужен dsn. делаем composer req yii-sentry и к config/params.php в самый низ прилетает 'yii-sentry' => ['dsn' => null]
а-ля symfony/recipe
источник

AM

Alexander Makarov in Yii Framework 3
Алексей R
Мне как раз он и не нужен и было бы норм если бы он был опциональным. А то отправлять пустую строку без надобности так себе
Фиксни.
источник

AM

Alexander Makarov in Yii Framework 3
Сергей Предводителев
Я всё пытаюсь разделить админку и основной сайт, но ничего умнее, чем сделать это через разные точки входа со своими контейнерами не придумывается :(

Но чтобы это сделать нужно переопределять $params в конфигах. Может всё таки подумать про этот issue?
Да, я посмотрю. Дела по старым Yii пока всё.
источник

RT

Roman Tsurkanu in Yii Framework 3
Алексей R
в IdentityRepositoryInterface есть метод findIdentityByToken(string $token, string $type): ?IdentityInterface;
Почему $type не опциональный параметр?
Тоже наткнулся на это
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
еще круто было бы построить config-validator на основе yiisoft/validator.
вендроские конфиги покрыть проверками и проверку реализовать через отдельную консольную команду.
Норм идеи. Запиши в issue.
источник

AM

Alexander Makarov in Yii Framework 3
Roman Tsurkanu
Тоже наткнулся на это
Это было типа для разных токенов. Вот как раз логин в админку и логин как юзер.
источник

RT

Roman Tsurkanu in Yii Framework 3
Да идея понятна, в простых проектах это не нужно. Надо просто опционально сделать
источник

AM

Alexander Makarov in Yii Framework 3
Roman Tsurkanu
Да идея понятна, в простых проектах это не нужно. Надо просто опционально сделать
Я ок.
источник

RT

Roman Tsurkanu in Yii Framework 3
Sentry тоже хотел предложить. Уже классика. Все используют. Надо делать.
источник

NO

Nex Otaku in Yii Framework 3
Solution looks messy and bloated to me.

Service Provider, Extension... Adding more and more components, abstractions... To achieve what?

What do we want from modules?
1. Easy to install
2. Easy to customize

1 — we in 2020 have class autoloading, composer and PSR-4. There is nothing more need to do to include some third-party code in you app. "composer install" - and you have your package ready to use in any place in app )

2 — This is easily done using patterns, and OOP capabilities, already existing in core language.

Change implementation? Use interface.

Hook to event? Use Publisher/Subscriber pattern, or some other suitable pattern

Configure object dependencies? Use dependency injection

All this "we need more classes to provide modularity" comes from lack of knowledge of basic stuff. You don't need to reinvent the wheel. Just use what you have, all you actually need is already there.

Maybe this "modules standard" way was useful 10 years ago... But today it is obsolete.

Moreover, this "standard" is actually limiting your possibilities.

If we use usual ways to extend and customize code, like interfaces, dependency injection, we have access to ANY bit of logic in module, that is made replaceable.

Once module was developed with SOLID in mind, it should provide maximum flexibility. You can replace anything... And subscribe to events )

But, what happens with "Service Providers"-way? When you build module, you have to make Factories, Providers, and define set of extensible points.

Defining this set of extensible points, you tell the user: "This is what I give you, you can customize here and there, ask for no more". This is limiting!

So. For making a good, reusable, customizable module, you need:
1. Good understanding of OOP, architecture patterns
2. Basic language, tooling, framework features (interfaces, autoloading, package manager, dependency injection)
3. SOLID code
4. Well written documentation

And nothing more...
источник