Php 两个不同框架上的CMS?

Php 两个不同框架上的CMS?,php,zend-framework,frameworks,content-management-system,Php,Zend Framework,Frameworks,Content Management System,我不确定这是否可行,但假设你想构建一个CMS,但你在两个框架之间左右为难,因为每个框架都有一些你喜欢的特性。是否可以使用两个框架创建CMS?这种方法有优点还是缺点?严格地说,关于Zend框架(ZF),我会说是的。ZF组件应尽可能独立于其他组件。我想说,将ZF库集成到其他框架(如Cake、Symfony或Codeigniter)中并不是很困难(实际上可能很常见) 这实际上取决于你喜欢两者的哪些方面 Zend Frameowrk更像是一个库,因此您可以从中拾取和选择组件。Symfony还有一些可重复

我不确定这是否可行,但假设你想构建一个CMS,但你在两个框架之间左右为难,因为每个框架都有一些你喜欢的特性。是否可以使用两个框架创建CMS?这种方法有优点还是缺点?

严格地说,关于Zend框架(ZF),我会说是的。ZF组件应尽可能独立于其他组件。我想说,将ZF库集成到其他框架(如Cake、Symfony或Codeigniter)中并不是很困难(实际上可能很常见)

这实际上取决于你喜欢两者的哪些方面

Zend Frameowrk更像是一个库,因此您可以从中拾取和选择组件。Symfony还有一些可重复使用的组件

真的,你可以做任何事。。。这只取决于你想做多少工作,以及你有多愿意修改框架代码。注意:大多数其他PHP框架不如Zend框架灵活(接下来可能是Symfony)

这听起来很混乱,所以我建议不要这样做,除非你按照我上面描述的方式使用它。将ZF或Symfony组件拉入其他框架很容易,但反过来就不行了

希望这有帮助

是否可以使用两个框架创建CMS

虽然可以在其他框架/CMS中使用来自Zend框架的组件——其他组件库也可能如此,但Zend是我所知道的模块化程度最高的组件——但混合使用两个成熟的框架通常不是一个好主意

许多核心功能,如MVC结构、URL路由、数据库层、单元测试、错误管理等,本质上无法在没有大量摩擦的情况下由两个框架同时提供。此外,当其中一个框架需要更新时,您可能会遇到问题


我建议您选择涵盖您所需的大部分功能的框架,并尝试使用插件或自己的修改添加缺少的功能

你的问题太抽象了。 例如,Zend Framework更像是一个特定功能的库,可以包含在您的代码库中,然后是一些封闭的开发环境,例如Symfony Framework

由于它,ZF可以简单地包含在您的代码库中()


与Symfony Framework相比,Symfony Framework是一个封闭的解决方案,取决于前端服务器环境,因此您不能像其他framewor的从属服务器那样使用它。

大多数框架的可组合性很可能使您同时具备这两种框架的所有缺点,同时消除了两者的大部分优点。

在我看来,一个框架将用作核心—引导、MVC堆栈、路由—而另一个框架将用于引入特定功能—例如用于表单或过滤或与web服务交互的类等

尽管我更喜欢Zend框架作为核心(以及大多数其他东西),但它的随意使用架构支持将其他框架作为核心,并在需要的地方引入ZF组件


正如@Adrian所指出的,将ZF组件拉入主要基于另一个框架的项目中是很容易的,因为ZF的设计考虑到了这种灵活性。在这方面,其他框架的适应性较差。

你可以做到。大多数现代框架(Zend、symfony、flow)都能够使用其他框架的一部分。Symfony 2使用Zend记录器,flow3使用sfYaml。。。可以交换一些组件

但是,imho,您应该坚持使用一个框架作为核心,并且只使用相对隔离的子系统。适配器和门面设计模式可以帮助您将它们混合在一起—某些组件/类别在非本机环境中使用之前需要一些包装


进一步阅读:

当然有可能,我看不出有什么问题。例如,我在一个相对较大的项目中使用了CakePHP和Zend,这是一种cms。CakePHP用于核心(路由、MVC),Zend用于某些“模块”。主要针对PDF、电子邮件(smtp)、FTP和CakePHP不太擅长的其他一些。有了Cake,使用ZF组件就相当容易了,而且一点也不觉得有问题


事实上,ZF的编写目的是尽可能独立,以便您可以在任何时间、任何地点使用任何组件。然而,它不会反过来工作(使用ZF作为核心和蛋糕组件)。当然这是可能的,但这是一种真正的痛苦,没有任何好处。因此,ZF可以在几乎任何其他框架内使用,而且不会有任何问题,imho。

这取决于框架;你在哪两个之间左右为难?从一个使用MVC和/或ORM模式,从另一个使用模板引擎,是的,我可以看到这种情况。但是除了Zend之外,大多数框架并没有很好地协同工作/并不是由真正独立的组件组成的。我更倾向于使用最适合的框架,并尝试将我错过的功能集成到其中,如果我认为这些功能足够有趣,并且有时间正确地解决并记录下来,我可能会将其返回到所选的框架中。