Я видел много разных схем и расширений имен, используемых для файлов PHP, которые в основном являются просто классами. Некоторые примеры:
В чем разница, а что лучше?
Нет никакой разницы, кроме того, что вы видите. Те, которые работают с .class
, полезны, если вы используете автозагрузку и не имеете определенного каталога, в котором живут ваши файлы классов. В противном случае это совершенно произвольно. (Я использовал ClassName.class.php
.)
Каковы ваши стандарты кодирования?
Обычно начинаются имена классов с большой буквы (например: class MyClass
). Если вы это сделаете, то следует, что вы бы назвали файл MyClass.php
. И MyClass.class.php
тоже работает.
MyClass.class
– плохая идея, которая может позволить кому-то просмотреть исходный код, если они запросят этот файл по имени. Использование расширения .php
гарантирует, что пользователь увидит только результат после обработки файла интерпретатором PHP, который для файла, который содержит ничего, кроме класса, – это пустая страница.
Наконец, загляните в autoload()
, что избавит вас от необходимости вызова require_once
для загрузки вашего класса.
Обновление: при стандарте PHP-кодирования PSR-4 теперь есть полуофициальный способ назвать ваши файлы классов. Предыдущий совет – назвать свой файл класса так же, как класс с расширением .php
– все еще стоит. Но теперь вы должны поместить этот файл класса в подкаталог, названный в честь вашего пространства имен классов; PSR-4 требует, чтобы все ваши классы содержались в определенном вами пространстве имен.
Что вы получаете за это? Автозагрузка бесплатно! Если вы используете Composer , вы можете указать каталог верхнего уровня для своих классов, и Composer будет автоматически загружать их. Больше нет require
для загрузки ваших классов.
Если вы не хотите этого делать, вам не нужно: PSR-4 является рекомендацией , а не требованием.
Я предпочитаю MyClass.php – точное имя (включая капиталы) как класс.
Однако, если вы работаете над существующим проектом, вы должны использовать любую схему именования, которую имеет проект.
Если вы не работаете над существующим проектом или платформой, я склоняюсь к документированному набору соглашений, таких как Zend's: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html
Плюс это означает, что вы можете использовать такие инструменты, как PHP Code Sniffer, чтобы каждый придерживался конвенции.
В любом случае, Consistency – это название игры. Это делает его намного проще для других (включая вас через несколько месяцев), чтобы ускориться на кодовой базе.