Ресурсы о том, как спроектировать каркас - PullRequest
2 голосов
/ 30 мая 2010

Существуют ли какие-либо ресурсы о том, как разрабатывать фреймворки, т. Е. Советы и рекомендации, лучшие практики и т. Д.

Ответы [ 3 ]

4 голосов
/ 30 мая 2010

Для .NET есть

Рекомендации по разработке структуры: условные обозначения, идиомы и шаблоны для многократно используемых библиотек .NET
http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613

Вы также можете изучать фреймворки, такие как Spring .

2 голосов
/ 30 мая 2010

Техническая лекция Google Как разработать хороший API и почему он важен дает множество идей о том, как создать хороший API.

1 голос
/ 30 мая 2010

Что касается PHP, вот несколько советов от меня:

Используйте MVC в качестве типа фреймворка.

MVC (Model-View-Controller) - это лучший способ создать каркас, разделить логику и модели с вашими представлениями и т. Д. - лучший способ создать новое чистое приложение.

Я полагаю, что переполнение стека использует шаблон MVC, не уверен, что его PHP / ASP tho.

Сделайте ваш код максимально открытым.

Это означает, что практически любой объект доступен во всем приложении.

Я достиг этого, создав статический класс, который является глобальной областью действия для решения проблемы, например:

class Registry{....}

Registry::add('Database',New Database);
Registry::add('Input',New Input);
Registry::add('Output',New Output);

тогда в любом месте приложения вы можете легко получить такие объекты:

Regsitry::get('Database')->query('Select .... LIMI 10')->fetchObject();

Не использовать шаблонизаторы

На мой взгляд, движки шаблонов не самые лучшие, так как PHP сам по себе является движком шаблонов, поэтому не нужно создавать много кода для разбора ваших шаблонов, а затем снова разбирать PHP, это логично.

Вместо этого создайте систему, в которой пользователь сообщит View, какой файл шаблона вывести и проверит улов для этого, если его нет в кэше, тогда этот объект перенесет его в другой объект, называемый, скажем, ViewLoader, Witch в __Construct он включает в себя файл шаблона php, но также имеет другие методы, такие как url() и escape() и т. д., поэтому в временных полях вы можете использовать

$this->url('controller','method',$this->params);

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...