Как я понял в соответствии со стандартом PSR-2, мы должны использовать имена каталогов, содержащие классы. Но как это сделать, если каталог также содержит некоторые другие файлы, например стили и скрипты?
Скажем, у меня есть каталог плагинов, каждый плагин может содержать шаблоны и другие вещи:
plugins
PluginName // lowercase?
PluginName.php // Contains base class "PluginName"templates
home.tpl
css
css.css
js
js.js
PluginName2
....
Это правильная структура?
Вы можете назвать ваши каталоги как угодно.
Однако, если вы намереваетесь автоматически загружать ваши классы PHP с помощью PSR-0 или PSR-4, имена каталогов, которых касается соответствующая часть имени класса, должны точно совпадать.
PSR-2 не делает никаких предположений или не дает и не определяет правила, по которым должен иметься имя класса или пространство имен.
PSR-1 заявляет в Глава 3: «Имена классов ДОЛЖНЫ быть объявлены в StudlyCaps.» Это, однако, влияет только на имя файла, содержащего такой класс. Если вы используете автозагрузку PSR-4, вы можете по-прежнему избегать использования какой-либо части пространства имен вообще в пути, если вы определяете целую карту Name\Space -> directory/for/that/namespace
для каждого каталога, который содержит код.
PSR-1 не имеет каких-либо правил форматирования пространства имен, поэтому вы также можете избегать использования там заглавных букв и, следовательно, избегать использования заглавных букв в пути к каталогу.
Обратите внимание, что автозагрузка PSR-0 и PSR-4 чувствительна к регистру, когда речь идет о сопоставлении пространства имен / имени класса с путем и файлом файловой системы. Таким образом, в конце концов, вы все равно получите чувствительную к регистру компоновку файловой системы.
Также обратите внимание, что большинство пространств имен также используют StudlyCaps, и я считаю, что использование строчных букв необычно.
Не существует четко определенного способа, каким должна быть структура в PHP.
Я даже не думаю, что имена каталогов должны быть заглавными.
Однако может ли плагин или любые зависимости обрабатываться любым менеджером пакетов (Композитор)?
Из того, что я могу сказать, ваша структура выглядит отлично.