创建库的框架在哪里?

时间:2010-05-06 16:43:33

标签: php design-patterns oop

每当我创建一个PHP库(不是框架)时,我倾向于每次都重新发明一切。

“在何处放置配置选项?”

“这里使用哪种设计模式?”

“所有课程应该如何相互扩展?”

依旧......

然后我想,是不是有一个好的库框架可以在任何地方使用?

它就像一个Web应用程序的框架(symfony,cakephp ......),但不是创建一个Web应用程序,这个框架将帮助编码人员创建一个库,提供所有标准结构和类(观察者模式,依赖注入)等)。

我认为如果现在不可用,那将是下一个重大事项。通过这种方式,在创建库时会有一个标准,否则,当每个人都创建自己的结构时,它就像一个丛林,很多编码员只是编码而不考虑可重用性等。

目前还没有任何创建库的框架?

如果没有,您是否同意我的说法,这是使用图书馆框架的方法?

因为我真的浪费了很多时间(几个星期!)只是在考虑如何组织事物,无论是在代码和文件级别,当我应该开始编写逻辑时。

分享你的想法!

3 个答案:

答案 0 :(得分:4)

我认为有些框架可以满足您的需求。开发人员区分了全栈框架和更多基于组件的框架。

基于组件的框架包括一组可以或多或少独立使用的更细粒度的组件。例如配置,身份验证,电子邮件,Web服务等。

如果您正在谈论一个可以更容易开发这些组件的框架,我不确定它的价值在哪里。框架通过抽象他们确定您将需要的公共代码来提供价值。身份验证组件和电子邮件组件之间的公共代码是什么?

框架可提高开发人员对众所周知任务的工作效率。任务越具体和众所周知,框架就越能够假设它知道如何去做。示例:Drupal或MediaWiki。

但是框架不会为任何代码执行OO设计。这是朝着相反的方向发展,远离更具体的,更广泛的任务。很难确定可以从诸如“库”这样广泛的技术中抽象出来的通用代码。

答案 1 :(得分:4)

好吧,now Bill basically说了我要说的一切,但无论如何。我可以抛出一些链接:

如果你想要一些东西,你可以直接进入你的webroot并开始编写你的应用程序,你正在寻找一个强大使用Convention over Configuration的全栈框架。从现代框架中,我会想到Symfony

如果您需要独立组件,请查找组件库,例如Zeta Components (formerly ezComponents)Zend FrameworkSymfony Components(包括DI framework)。您可以重复使用它们或扩展它们以添加其他要求。如果您需要ORM,请使用Doctrine。不要忘记PEAR

然而,你如何使用上面的内容或你用它们做什么是你无法下载的地方。 ArchitectureDesign是开发人员(或架构师)的任务。你不能下载它,因为它可能不适合你的应用程序而不需要大量修改。模式(如GOF patternsPoEAA patterns提供了有关如何在一般级别上解决问题的指导原则,但您始终必须使其适应您的应用程序。

答案 2 :(得分:1)

您描述的大多数内容称为软件工程。这是使用基础软件和语言工具形成复杂解决方案的本质。至于使重复部分更容易和抽象,这是大多数现代语言尝试做的事情。

我想你问题的答案是:Python,.NET,Ruby