Это скорее вопрос предпочтения, но я хочу знать, что люди предпочитают при организации дерева каталогов своего приложения для управления классами и подклассами.
учитывая имя файла = имя класса
Foo.php
Foo/Bar.php
// расширяет Foo
Foo/Bar/Baz.php
// расширяет Foo\Bar
Post.php
Post/Media.php
— расширяется Post
Post/Media/Image.php
— расширяется Post\Media
Post/Media/Audio.php
— расширяется Post\Media
Foo.php
BarFoo.php
BazBarFoo.php
Post.php
MediaPost.php
— расширяется Post
ImageMediaPost.php
— расширяется MediaPost
AudioMediaPost.php
— расширяется MediaPost
Пожалуйста, поделитесь своими мыслями.
Вообще говоря, создание подклассов — это анти-паттерн. Он тесно связывает классы вместе и может привести к некоторому сложному в обслуживании коду. Гораздо уместнее иметь чистые интерфейсы с инверсией управления. После этого вы получите небольшие компоненты, которые выполняют одну работу и только одну. Я собираюсь ответить на ваш вопрос, но мне нужно было сказать вам, почему я так думаю:
Если вы часто используете подклассы, это само по себе создает огромную связь. Представление о том, что связывание в файловой системе — это еще один уровень, который потом очень затруднит изменение вашего кода.
Пространство имен и упаковка, основанные на обязанностях классов / интерфейсов, оказались для меня лучшим способом.
Это хорошая статья о том, как думать об обязанностях: http://blog.8thlight.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html
Других решений пока нет …