Я хотел бы взглянуть на Symfony2, Lithium и Zend Framework, я думаю, что они являются лучшими в отношении дизайна. Я бы посоветовал не использовать синглтоны и вместо этого использовать инъекцию зависимостей.
Насколько важно, чтобы все основные классы должны были расширяться и что это хороший способ достичь этого?
Это действительно зависит от обязанностей классов. Возможно, вы не захотите, чтобы некоторые основные компоненты в вашем стеке MVC (при условии, что это MVC) были расширены, и вы могли объявить их окончательными или объявить определенные методы как окончательные и принудительные расширения через плагины и помощники. Другие классы, возможно, предназначены для расширения, и в этом случае их следует объявлять абстрактными.
IMO, вы должны в первую очередь использовать защищенные свойства и предоставлять методы доступа. Но не просто используйте защищенную видимость во всех своих свойствах, для некоторых это нормально, а для публики и частного - все сводится к ответственности.
Все, учитывая степень ответственности класса, если он обслуживает несколько ролей/целей, пришло время реорганизовать и разбить этот класс на слишком или несколько классов. И не забудьте использовать интерфейсы!
Я действительно думаю, что идти с открытым исходным кодом с ним и позволить другим чувствовать ту же радость, что я делаю;)
Перед тем, как идти высвобождая свой код во внимание следующее:
- Проверено все мои модули кода?
- Использовать контроль версий?
- Есть ли у меня полная документация по API?
Ненавижу быть неудачником, но если вы ответили «нет» на какой-либо из этих вопросов, не беспокойтесь о том, чтобы открыть ваш код правильно, потому что никто его не будет использовать. Возможно, просто начните использовать GitHub для SCM. Также подумайте, что есть уже куча первоклассных фреймворков, зачем им использовать их вместо этого?
Также не забудьте прочитать Top ten reasons why I wont use your open source project.
... Я просто пытаюсь избавить вас от ненужных усилий в вашем проекте для общественного использования, когда вы все равно не получите никакой тяги.
Я вижу вашу точку зрения, но это очень печально читать. Надеюсь, что у нас все еще есть некоторые «реинветеры», так что появляются новые проекты с открытым исходным кодом:/Я взглянул на Symfony2, Li3 и считаю, что инъекция зависимостей - это путь. Я уже начал интегрировать его, и он выглядит довольно неплохо. :) Спасибо за хороший ответ./Tobias – sandelius
Не волнуйтесь, большинство разработчиков постоянно проходят этот этап, я тоже был там и, вероятно, снова на каком-то этапе. Это удручает, но это правда. Как я уже сказал, если вы хотите ОС, ваш проект просто начнет использовать GitHub, но не отправляйте выделенный веб-сайт для своей структуры. Fabien Potencier сделал хороший контейнер DI: [Pimple] (https://github.com/fabpot/Pimple), вы должны его проверить. – Cobby