Я видел много разных схем и расширений имен, используемых для файлов PHP, которые в основном являются просто классами. Некоторые примеры:
- myClass.php
- myClass.class.php
- myClass.class
В чем разница, и что лучше?
Я видел много разных схем и расширений имен, используемых для файлов 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 - это название игры. Это значительно облегчает для других (включая вас через несколько месяцев), чтобы ускорить работу на базе кода.