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