|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看到好的帖子最好up一下,以使得更多的人得到分享。 咱们企图从头入手下手一个新项目,为此评价了一些PHP框架。咱们的备选列表有CakePHP , CodeIgniter , Symfony和Zend 。 咱们分离利用这4种框架编写了一个不异的小使用(一个复杂的Wiki使用),但愿咱们能尽快选定一个最适合的。
声明:我会勉力确保本人的客不雅性,固然我是一个ColdeIginter的喜好者。我所任务的公司是Zend的合股人(咱们已利用了Zend Platform 和 Zend Studio)。 虽然一入手下手的企图是评价4个框架,然而这篇文章实践是CodeIgniter和Zend Framework的直接对照。在消费了几个小时研讨了这4个框架后,我不能不把Symfony和CakePHP从名单中扫除。来由以下:
Learning curve 进修曲线
Symfony 和 CakePHP都有一个十分峻峭的进修曲线。CakePHP有严厉的划定规矩:数据标明此、文件地位、办法名和类名。Symfony利用 .yml 格局(需求进修,固然它不是真的很难)来存储设置装备摆设信息,而且大批的操作需求经由过程掌握台(console)完成,创立数据表、数据模子和良多其它文件都需求利用号令行。
Strict ORM: 严厉的ORM
Symfony 和 CakePHP都有一个成熟的对象关系映照器(object-relational mappers ORM) ,供应对数据的会见,然而这一特征很难被禁用,除非作出大批的勉力。这些ORM有着严厉的划定规矩和商定,它们必需被遵守。与之相反,Zend Framework 和 CodeIgniter 在是不是利用Models和若何利用Models上十分天真的。利用Models是可选的,固然它们都无数据映照器(data mappers),但没有这些使用一样可以停止(开辟编写)。使用的数据操作将是极为密集和精密(intensive )的,咱们不肯意遭到选择的限制。
Flexibility: 天真性
Zend Framework和CodeIgniter比其他两个框架更天真。
终究对照
CodeIgniter Zend Framework Set Up 初始创立
CodeIgniter很轻易初始化。 复制框架的一切文件到收集办事器,这是一个不错的入手下手。 它的文件夹也很小-大约2 .1兆。从入手下手创立,5分钟后,我就能够显示出默许主页。 Zend Framework需求费事一些,它需求创立一个bootstrap文件,填写一切的初始化设置。对照之下,框架有点大-大约12.4MB。全部初始创立进程用来大约19分钟。 文档
文档的布局和组织相当好,然而不如Zend Framework具体。CodeIgniter有服装论坛和Wike,有良多用户提交的代码。 Zend Framework有十分具体的文档,而且有良多示例。在我看来它的文档布局不如CodeIgniter,这多是遭到后面提到的细节和大批的可用的部件影响。ZF 也有一个Wiki,外面有大批的教程。 模板
CodeIgniter包含一个模板剖析器类,在我看来,它的感化是无限的,由于它不撑持逻辑(例如,IF语句)。不论怎样说,CI建议在模板(view)中利用PHP标签。 ZF 包括了一个结构类,用于给全部站点或使用供应一个通用结构(或多个结构)。它直接在模板中利用PHP标签,它也供应了一个笼统的View类,可使用第三方模板库停止扩大。 组件
CI有良多库和匡助器来简化开辟进程。虽然这些比拟ZF仍是显得少,但大体上,用法更复杂(While it does have less of these than ZF, in the main, the usage of the CI variants is simpler)。 ZF有巨量的类和组件。它们有着很好的文档但利用起来要比CI的略微庞杂一些。 数据会见
CI有一个用于处置数据库毗连的数据库类。这个类可使用尺度的SQL查询,利用尺度的PHP体例停止创立、检索、更新和删除。CI也供应了一个Active Record类,这是一个修正版的举动纪录形式(Active Record Database Pattern)。这一形式可让你利用更少的代码停止数据检索、拔出和更新。某些情形下仅仅需求1到2行代码就能够停止一个数据操作。除简化,举动纪录的一个次要优点是:它可以创立一个不依附数据库的使用,由于查询语句是由分歧的数据库适配器生成的。它还思索了查询的平安性,体系会主动对变量停止escape。 Zend_Db 和它的相干类为ZF供应了一个复杂SQL数据库接口。它吸收尺度SQL查询然而简化了获得查询了局的进程。它还包含了一个ORM,利用Table Data Gateway 和 Row Data Gateway。它们分离把数据表和数据行包装成对象,而且极大的进步了开辟速度。弱点是,和CI利用的修正版的active record pattern(没有普遍的利用对象)比拟,有稍微的功能丧失。Zend_Db 还可以处置表关系。(Zend_Db can also model table relationships in PHP classes making database joins a breeze.) 天真性
CI十分天真,几近一切的默许设置都可以修正。 ZF其实一个类的复杂纠合,一切的文件和目次可以被放置就任何地位,只需这些地位被到场到了bootstrap文件。 验证
在CI中数据验证是由一个验证类处置的。一些划定规矩被界说并付与验证对象(object),验证对象主动的验证从URL或表单提交的数据。法式员可以决意若何处置这些获得。验证类还可以匡助主动的给指定字段设置毛病信息。 Zend_Validate 供应了一套经常使用的验证器。它还供应了一个复杂的验证器毗连机制,多个验证器可以按指定的按次使用到单一数据上(datum )。在 ZF中,每一个验证器都是一个分歧的类,类被添加到数据(就像过滤器),而不是像CI一样,数据被传入类。In ZF, each validator is a separate class and the class is added to the data (like a filter) rather than the data being passed into the class like it is in CodeIgniter. 表单
CI中的Form Helper文件包括一些函数,用于匡助操作表单。它的感化是生成表单字段,然而书写HTML依然是没法防止的。 Zend_Form 简化了表单的创立和处置。它处置元素过滤、验证、escaping data、表单生成(rendering)。利用Zend_Form,ZF可使用PHP完整的包装一个表单,包含标签、验证、毛病信息。 功能
CI大约有ZF的2倍功能 ZF大约比CI慢一半 测试
CI有一个单位测试类,然而它勉励夹杂测试代码和真实代码,我不建议如许。或许可使用第三方的扩大用于复杂测试。A third-party extension for SimpleTest is available though。和CI的类一同利用PHPUnit也是可以的。 ZF没有内置的测试类,然而它的中心类利用PHPUnit作为测试框架,这可以被扩大来包括一切的附加类 this can be extended to include any additional classes。在ZF中利用 SimpleTest 也是可行的。 国际化
NO YES 受权
BSD-style New BSD
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。 |
|