zend-framework 与 Kohana 与 Symfony [关闭]

Posted

技术标签:

【中文标题】zend-framework 与 Kohana 与 Symfony [关闭]【英文标题】:zend-framework versus Kohana versus Symfony [closed] 【发布时间】:2011-01-05 02:02:50 【问题描述】:

您会向了解 php 基础知识的人推荐其中哪个框架? 有什么优点和缺点?

【问题讨论】:

【参考方案1】:

我不会向只知道基础知识的人推荐任何框架。相反,我建议首先牢牢掌握 OOP 和最常见的设计模式,因为这就是您将在这些框架中找到的内容。了解各种可用的 PHP 库和扩展也没有什么坏处。

【讨论】:

同意戈登。当您几乎没有触及表面时,没有必要跳到任何框架。那宝贵的时间应该花在学习 mysql、mysqli、PDO、字符串处理、RegEx、cookie、会话、GD2 以及当然 OOP 和设计模式而不是框架上。 我不同意。事实上,我团队中的所有高级开发人员都致力于构建框架和 API,而初级开发人员在使用框架时更不容易出错。上帝保佑,如果我们不使用框架,代码就会到处都是。在评估了以上所有内容后,我选择了 CodeIgniter。 Kohana 不是一个成熟的产品——例如,它不关心向后兼容性,这意味着它有利于学习,但不适用于生产。 @aleemb 我不相信框架可以让初级人员编写更少的错误代码。如果后辈不知道正确的OOD,他们将编写OO意大利面条代码,例如MVC 框架的一个常见初学者错误是创建胖控制器和贫血模型。这通常会导致代码重复,基本上是到处都是代码。他们也经常倾向于继承和组合而不是聚合。或者他们针对具体实现而不是接口进行编码。两者都会导致结构单一、难以维护。框架有助于解决具体问题,而不是编写干净的代码。 不使用框架的人注定要重新发明它们。不良。在我看来,使用框架将帮助您学习正确的架构、设计模式等。此外,拥有通用语法可以让您从使用相同框架的其他程序员那里获得洞察力。 每一个骑自行车的人在骑赛车之前,都先学会了骑一辆带辅助轮的小自行车来学习踩踏和平衡的基础知识,程序员为什么要烧台阶呢?我已经通过艰苦的方式学习了 php,现在我很高兴能够使用一个框架(Zend 更不用说它了)。我对 javascript 做了同样的事情(例如学习手动构建 ajax 请求)。然后,当您遇到问题时,您可以更广泛地了解可能是什么问题,因为您知道涉及哪些元素(顺便说一句 +1 给 Gordon)【参考方案2】:

我认为框架对于初学者来说是一把双刃剑。在许多情况下,您可能可以在更短的时间内完成更多工作,但在其他情况下(不是少数),您会犯错误,因为您不了解框架代码的复杂性。如果你想使用它,我认为你应该能够阅读一个框架并理解它的架构。

也就是说,真正的破解似乎使用Symfony。它可能成为或可能已经是最好的、最通用的、最强大的框架。但它肯定需要对编程原理以及一般的网络技术和服务器技术有很多了解。

Zend 框架 也非常强大且容易上手。它绝对可以比 Kohana 为您做更多的事情。

如果你想要一个轻量级的框架,Kohana 也是一个不错的选择。过去几个月它取得了长足的进步,我认为它正在迅速成为新的轻量级宠儿。

所以总而言之,你提到的三个框架是目前 PHP 框架市场上的三个***框架,你不会犯任何错误。

【讨论】:

【参考方案3】:

更新:现在 8 年后,Kohana 不再维护。 Laravel 是我目前推荐的一个相对简单但非常强大的 PHP 框架。


尽管 ZF 已经很成熟并且有据可查,但我还是建议使用 Kohana,因为它的复杂性要低得多。只需从github 下载或克隆示例应用程序,就可以很容易地开始修改它。

Symphony 不适合初学者。我不同意框架一般不适合初学者。从一个空白文件开始,没有框架,所有的架构设计都留给了不知道自己在做什么的人,而从像 Kohana 这样的轻量级框架开始,为您提供了一个组织良好的平台和文档来开始运行。在没有任何示例指导的情况下学习 OO 是非常困难的,因为您还不知道好的 OO 设计是什么样的。

下载/克隆 Kohana 示例应用程序后,点击 docs,您将立即编写精心设计的 OO 代码。

【讨论】:

Kohana 不再维护,而且我认为 Laravel 好多了,所以这是我目前的推荐。【参考方案4】:

对于初学者并使用您提供的三个示例,出于这些原因,我会说从 Kohana(或 Code Igniter)开始。

    它是一个轻量级框架,是完整 PHP 开发的良好起点,因为它可以指导如何用一种自身没有很多结构的语言来组织项目 介绍基本的 MVC 概念。 具有可用于任何 PHP 项目的基本功能,例如缓存、数据过滤等

如果您出于以下原因计划或努力从事更大的项目,我会继续使用 Zend 框架:

    Kohana 文档非常缺乏(它对于初学者来说是易于管理的,因为您最终会四处寻找框架并查看是什么使框架滴答作响,这样他们就不会看到这种不祥的神圣代码,这是一个加号;但是在一个具有时间表很烦人) Kohana 强制执行某些惯例,这在大型项目中通常不方便 缺乏对“企业”开发有用的成熟功能,例如一个不错的单元测试系统(在 Kohana 中可以使用基本的 phpunit 模块,您当然可以使用基本的 PHPUnit,但相比之下 Zend 框架扩展了 PHPUnit 功能以更好地适应它的框架) 更好的支持。 Zend 框架背后有 Zend 公司以及一个庞大的社区。这对他们来说是一个巨大的胜利,因为它渗透到框架的所有方面,例如Zend 框架中的配置被认为要好得多,更强大的安全功能,基于 PEAR 命名空间的适当的类自动加载,并且它具有过多的贡献组件。其中一些好处在开始时可以忽略,但在进行大型项目时变得非常宝贵。

我没有使用过 symfony,但据我所知,一旦你更精通 PHP(更好的 ORM、更好的脚手架等),它也有一些有用的特性。简介:Kohana 是一个好的开始,但如果您打算在小型网站之外进入 PHP,我建议您不要在此停留。

【讨论】:

【参考方案5】:

在你的情况下,我会选择(按此顺序):

    小花名 Zend 框架

因为它们比 Symphony 更容易上手(尤其是初学者)。

【讨论】:

【参考方案6】:

我一直想知道为什么人们说不提供单元测试系统是框架的主要缺点。好吧,测试您的应用程序是的责任,您应该使用最熟悉的工具。例如,我更喜欢SimpleTest,并且对捆绑并促进使用他们自己的测试系统的框架感到困扰。既然SimpleTest绰绰有余,为什么还要学习另一个单元测试系统?

请注意,提供单元测试系统和单元测试框架是两件完全不同的事情。框架应该进行单元测试,期间。但是对于这个任务,框架的开发者可能会使用他们最喜欢的工具。他们甚至可能推出自己的测试框架(似乎有些人从不学习并不断重新发明***)。但是,(恕我直言)框架测试应该与框架本身分开。它甚至不应该包含在框架 tarball 中,而是作为一个单独的包保存,只有框架的开发人员才感兴趣。

只是我的 2c。

【讨论】:

以上是关于zend-framework 与 Kohana 与 Symfony [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Wordpress 集成到 Kohana 3 中

Kohana ORM(自定义查询)与 MySQL ORDER BY & GROUP BY

本地主机上的 kohana 站点无法使用 https://

Kohana 3.1 都有哪些可用的 ORM 解决方案?

Kohana - 特定于控制器的 .htaccess

Kohana 2.3.4 ORM - 删除数据透视表关系