Issue: yiisoft/assets#24
-
Декларативный подход - отказаться от наследования, сделать
AssetBundle
финальным, все значения свойств указывать в массивах в конфигурационных файлах. Принимать конфигурацию в конструкторAssetManager
. yiisoft/assets#57 -
Гибрид - оставить классы как в текущей реализации. Объявлять в конфигурации все используемые классы (с доп. настройками если необходимо изменить дефолт). Принимать конфигурацию в конструктор
AssetManager
и регистрировать только объявленные классы.
Варианты и особенности | Текущая | Декларативный | Гибрид |
---|---|---|---|
Динамическая регистрация ассетов | ДА | НЕТ | НЕТ |
Типизация и автокомплит в IDE | ДА | НЕТ | ДА |
Объединение конфигураций | НЕТ | ДА | ДА |
Экспорт ассетов для сборщиков | НЕТ | ДА | ДА |
Доп. логика для каждого ассета | ДА | НЕТ | ДА |
- Динамическая регистрация ассетов - возможность регистрировать любой класс расширяемый
AssetBundle
.
public function register(array $names, ?int $position = null): void;
Для гибридного и декларативного подхода в $names
нужно будет передавать имена ассетов, которые были
объявлены в конфигурации.
- Экспорт ассетов для сборщиков - экспорт свойств со значениями в другие форматы, например в JSON для
сборщиков модулей, таких как
Webpack
. Для экспорта нужно иметь массив ассетов$class => $configArray|false
. В гибридном и декларативном подходе такой массив передается в конструктор, а в текущей реализации, юзеру нужно будет в ручную формировать массив для экспорта. - Доп. логика для каждого ассета - возможность добавления дополнительной логики, например фильтров: https://github.com/yiisoft/yii-bootstrap5/blob/master/src/Assets/BootstrapAsset.php#L33