Какое из следующих соглашений о присвоении имен больше всего используется/принимается, или который является самым оптимальным для большинства проектов? Мне нелегко решать.
Base class: \Model
Sub class: \Model\User
Base class: \Model\Model
Sub class: \Model\User
Base class: \Model\Base
sub class: \Model\User
Так, другими словами, я должен поместить базовый класс в то же пространство имен как подклассы, и я должен назвать это чем-то постоянным как "основа", или это должно просто иметь то же имя как пространство имен?
Не уверен, как PHP работает с пространствами имен/пакетами, но в других языках есть преимущества хранения вещей в одних и тех же пакетах. Я имею в виду возможность использовать модификаторы доступа Java default
и protected
, или ключевое слово C++ friend
. Это может быть невозможно/не так просто, когда вы начнете отделять абстракции в отдельный пакет от конкретики.
Мне нравится соглашение об именовании Zend Framework. Если поначалу это кажется не очень простым, то потом это очень легко поддерживать.
http://framework.zend.com/manual/en/coding-standard.naming-conventions.html
Честно говоря, я всегда помещаю базовый класс в тот же каталог, что и подклассы, за исключением случаев, когда базовый класс предназначен как часть многоприкладной структуры, и в этом случае он помещается в общую библиотеку,
.