Zend Framework的缺陷(连载之6)

       Zend Framework足足有40M的代码,以试图满足不同层次的需要。从这一点来看,可谓用心良苦。
        然而,十分有趣的是,虽然有此心,但一些基本的功能却不能满足用户的基本需求。
        读者也许不信。所以,我们不妨再举一个实例。同时,也讲解一下Zend Framework在这一方面的缺陷。
        一个最为基本的功能,那就是提供MVC模式的控制器。当然,你可能马上就会反驳,Zend Framework的控制器是做得最好的。这一点不可否认,在众多的MVC框架中,Zend Framework的控制器确实要比其它框架的要胜出一筹。比如,它能支持不同的路由方式:正则表达式路由,静态路由,模块路由,主机名路由,还有路由链。同时,分发器在分发时开启LOOP,确实状态结束后才退出。
        但是,所有这些,并不代表它没有缺陷,如果你真的使用了,你就会发现,却有很多问题,有些问题,却是常识性的。
        第一个常识性的问题,那就是,它没有User Agent判断。当然,这首先是PHP的问题。PHP提供的get_browser,几乎是一个不可用的函数。为什么这么说:因为,此函数需要一个很大的php_browscap.ini支持,因此,此函数运行速度极慢。同时,虚拟主机上无法使用,必须得用PHP代码下载。最根本的,就是用了此函数,你能得到的有用的参数不多。或者说,远远不够。为什么?因为,现在我们所面临的最大的问题:判断是手机还是PC访问,它做不到。因此, Zend Framework中并没有处理这一问题。这一点已充分说明,Zend Framework不能把握市场需求,闭门造车。相比之下,CodeIgniter却提供了UserAgent类。这不能不说,他们的市场眼光是很强的。或者,原本CodeIgniter就一直在为用户开发,也有这样的可能。
        第二、控制器虽完成了大量的代码,但一些代码,未给用户以可配置的接口和用状态方式返回给用户。为什么要强调这一点,因为,如果有此设计思想,那么一些代码就不需要用户现去编写。并且这些代码,对用户而言是相当重要的。这些代码有,确认是本站点的HOST,这样,就不会有非法域名指向。确认URL已经过过滤,这样,就容易免除XSS攻击。Zend Framework不但没有相关的实现代码,同时也没有相关的状态提示。所以,我们现在可以看到,很多大公司用Zend Framework构建的网站,当你故意键入一个不存在的页面,则会转到服务器的默认404页面。这种现象实在是让人感到可悲。
        第三,因为控制器的复杂性,所以设计模式也相当复杂。Zend Framework可谓是面向对象的典范。Zend Framework控制器中使用的策略模式,同时提供了插件方式,向用户完全开放对其扩展。从这一点而言,是相当不错的。但是,如此复杂的结构,代码中包含大量的注解,却没有足够的文档给予说明,实是一大悲哀。
        文档是否需要?这有两方面的问题。面向对象,原本就是只让用户关心如何使用,不必关心实现,黑箱操作。然而,要真正弄懂Zend Framework控制器,不看源码是不行的。这可以说是一大失败。据说,Zend Framework开发团队聚集了全世界一流的PHP开发专家,但却没有做到“让用户关心如何使用,不必关心实现”。GOOGLE一下,网上有多少讲解Zend Framework控制器原理的,有多少人不得不研究源码的,就可以设想,Zend Framework控制器竟究是成功还是失败了。无法想象,是团队不重视,还是团队脱离用户,具体原因就不再深究了!按照Zend Framework开发团队聚集了全世界一流的PHP开发专家这一说法,理应开发出更好的控制器!可惜,没有!
        很多人不用Zend Framework,其一大理由,就是培训成本,当我们耗费时间,耗费精力,把Zend Framework控制器弄懂弄通以后,我们却发现,它并不能完全满足我们的需求。这还算了,对于一些技术力量相对不强的公司,他们可是对Zend Framework抱着绝对的信任。最后的结果,却是让他们失望。反过来,如果我们有这样的时间,我们自己来写我们自己的控制器,这可是一劳永逸的事情。

你可能感兴趣的:(设计模式,mvc,PHP,正则表达式,Zend)