Заблудился в трех соснах, хотя думал что все знаю.
Когда изучал композер, смотрел пакеты сторонних разработчиков на packagist.org и заметил тенденцию, что пакеты именуются как
имя_поставщика/имя_пакета:
"autoload-dev": {
"psr-4": {
"Vendor\\Library\\": "src"
}
},
что казалось мне вполне логично - у поставщика может быть много пакетов.
Сейчас
PSR-4 перечитал и удивился -
оказывается, нигде такого требования нет - указывать именно такую нотацию:
Полностью определённое имя класса должно иметь следующую структуру: \<ПространствоИмён>(\<ПодпространствоИмён>)*\<ИмяКласса>
- грубо говоря, стандарт требует лишь указания Поставщика в <ПространствоИмён>, а какое <ПодпространствоИмён> будет - никого не волнует.
Посмотрел исходники yii и не понял - как им удалось добиться того, что они используют единое пространство имен высшего уровня - yii, хотя, в
app-base composer.json у них
"require": {
"yiisoft/yii2": "~2.0.6",
"yiisoft/yii2-bootstrap": "~2.0.0",
"yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0"
},
т.е. в коде use должно быть yiisoft/yii22, а у них просто use yii
Как они этого добились и почему это идет в разрез с идеологией композера?