PSR-2. Когда использовать заглавные буквы в каталогах?
Как я понял в соответствии со стандартом PSR-2, мы должны использовать имена каталогов, содержащие классы. Но как это сделать, если каталог также содержит некоторые другие файлы, например стили и скрипты?
Скажем, у меня есть каталог плагинов, каждый плагин может содержать шаблоны и другие вещи:
plugins
PluginName // lowercase?
PluginName.php // Contains base class "PluginName"
templates
home.tpl
css
css.css
js
js.js
PluginName2
....
Это правильная структура?
2 ответа
Вы можете назвать ваши каталоги как угодно.
Однако, если вы намереваетесь автоматически загружать свои классы 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.
Я даже не думаю, что имена каталогов должны быть заглавными.
Однако может ли плагин или любые зависимости обрабатываться каким-либо менеджером пакетов ( Composer)?
Из того, что я могу сказать, ваша структура выглядит отлично.