为什么Zend Framework如此受欢迎?

kei*_*thm 28 php zend-framework

我不是一个巨魔,我的目标不是开始一场火焰战; 我不是不尊重Zend框架的作者:它有很多很好的工作.但是......我有一份工作要完成,而且我很难协调ZF的受欢迎程度与使用它构建应用程序的现实.我真的想知道其他人为什么使用Zend Framework.

我对PHP世界还很陌生,但我已经用很多语言做了很多编程.在阅读了许多教程并在其中构建了几个应用程序后,一些核心Zend Framework工具对我来说就像是alpha代码.对我来说,下面的根本性缺陷,等等,似乎过于庞大考虑部署它的应用程序-但一遍又一遍的ZF建议为一体的,如果不是领先的框架.

首先让我说我发现ZF的大部分是可行的.路由工作非常适合,布局工具是可维护的(虽然与模板系统(如JSP/ASP)非常不同),缓存设施等也是如此.社区中似乎有一种趋势,即填充大量建模(例如验证)和查看逻辑(例如$ this-> headScript() - 为什么我的控制器必须关心我的视图需要哪个js文件?)到控制器中但可能是使用问题而不一定是框架的错误.

现在,我在短时间内遇到了一些非常严重(IMO)的弱点.如果我继续用它构建,我会想象未来我会发现的其他领域.

1.表单布局
许多人似乎对缺乏对表单布局的控制感到不满.你怎么能有一个流行的框架,构建一个简单的表单需要这么多的讨论? 问题1问题2.

2.认证/授权
似乎没有人真正理解如何简单地执行例行认证/授权.人们[包括你的人]真正努力实现简单的访问控制.此外,该方法似乎依赖于持久性的序列化,而不是传统的用户和权限的数据库存储. 一个令人困惑的例子,一个建议,增加设施,教程-第一部分, 和第二部分.这是太多的工作家伙!

我认为的弱点是不真实的还是某种程度上不是问题?为什么或者为什么不?你为什么选择Zend Framework(或不)?您是否发现其他区域如此痛苦以至于您想要将ZF转换为其他方法?谢谢你的意见.

Roc*_*och 17

因为他们擅长营销


Zend的创始人Andi Gutmans和Zeev Suraski是PHP的主要贡献者

他们有一个最完整的PHP框架.

当你想到它; 就像说:

"我们的语言不尽如人意,因此我们制作了一个带缓存的框架,使其更快"

  • Zend提供的大部分内容都可以在没有Zend的情况下完成.
  • 但Zend的软件包是一个非常好的"All in one"发行版.
  • 他们提供认证和培训.

  • 这是对"为什么Zend Framework如此受欢迎?"的简短解释. (2认同)
  • +1我同意.有一个营销因素,这是肯定的 (2认同)

Cor*_*lou 15

ZF的主要优点之一是您可以使用其中任何一个组件,并轻松地将它们与您自己的(或第三方)框架绑定,只需进行最少的修改即可.


Tom*_*far 6

表单:装饰器方法很复杂,但对于具有多种形式的应用程序而言是防弹且无价的.如果表单中有10个或25个项目,则无关紧,样式始终相同.当您知道如何使用它时,可以为您节省大量的工作.对于思维和目标更简单的用户,总会有viewScript装饰器;)

Auth/Acl:从来没有遇到任何问题.

Zend_Auth::getInstance()->hasIdentity() //logged in
Run Code Online (Sandbox Code Playgroud)

Zend_Auth::getInstance()->getIdentity()->role; //returns admin
Run Code Online (Sandbox Code Playgroud)

对于Acl:

$acl->isAllowed($who,  $where, $what);
$acl->isAllowed('roleAdmin', 'resourcePosts', 'create'); //returns true
Run Code Online (Sandbox Code Playgroud)

可以轻松修改以匹配MVC:

$acl->isAllowed('roleAdmin', $module.ucfirst($controller), $action); //returns true
$acl->isAllowed('roleAdmin', 'adminPosts', 'create'); //returns true
Run Code Online (Sandbox Code Playgroud)


小智 6

用ZendFramework为我着色.使用Zend Framework就像将一组训练轮焊接到您的代码中.您可以在Zend Framework中执行的任何操作都可以在原始PHP中执行.(记住ZF本身是用原始PHP编写的.)而且你通常可以使用相同数量的代码行来完成它 - 以与应用程序其余部分一致的方式编写.而且,通过使用本机PHP代码,您不会陷入只有少数PHP开发人员使用的小众工具.而且您不必担心与ZF版本的更改兼容.

在我的应用程序中,我做了与ZF工具相同的事情,主要是通过使用已存在多年的简单PHP函数:

  • 验证表单数据
  • 清理表单输入
  • 处理通过表单上传的文件
  • 操纵和比较日期
  • 处理认证
  • 发电子邮件
  • 写入日志文件
  • 从配置文件中读取
  • 读取外部HTTP页面
  • 以JSON和SOAP格式交换
  • 使用第三方API

我在Zend Framework中找不到任何值得我花时间的东西.并且不要让我开始咄咄逼人的"脚手架"框架,如CodeCoffin,AppShackler或Ruby in Chains.