上一节我们说到,Zend Framework中的一些代码是相当初级的,但我们只是举了控制结构的使用。现在我们来给出真正的代码实例。也许,你马上会说,这不仅是初级代码,简直就是垃圾代码。我敢打赌,你会有这样的感受。
这里我们要说的是Zend_Date。如果你没能看过这个类的代码,那好,现在我建议,你最好先打开看一下。我们的打开library\Zend\Date.php.
下面我来跟您讲一下,这个代杩为什么垃圾。首先,作者试图要把我们对 Datetime操作的需求完全收录到这个类中,提供完全的代码给大家使用。这也许是好事。但如果你看一下代码,就会发现,作者试图包办一切。并且,某种程度上,我不得不说,作者的真实意图,是在摆显,他有多大能耐。然而,可悲的是:越是摆显,越是让我们发现,作者是如何初级。
整个类有近5000行的代码,可见作者的“良苦用心”!!!此类中一个方法:function _calculate,这个方法的长度居然近1400多行。作者怪异地把 'add'|'sub'|'cmp'|'copy'|'set' 这五种运算合并到一个方法中。完全违背了一个函数做一个事的基本原则。而且,用户面临的是什么?无法对此函数产生信任。因为,这行长的代码,根本不是一两下子能够看懂看完的。记得一次微软公司的开发讲座上,说到微软公司要求每一个函数最长不能超过140行。试想,如果这个函数出错,(BUG总是难免的)那么,你必须得花时间弄懂这1400行代码。(上一节我们说了switch case控制结构,这个类中,可能是全框架用switch case控制结构最多的。)
反过来,如果我们把这些运算分开来,日期时间的操作,只要用户了解相关函数,分多行代码操作,那代码量会少得多,而不会背上这么多的又臭又长的垃圾代码!!Zend Framework有40M代码,不难想象,40M的代码,其中含了多少垃圾,由这一类原因造成的代码长度超标肯定不只这里一处!
比如,我们写个DateAdd函数,不超过10行代码就可完成:
function dateAdd($interval, $number, $date=null, $format="Y-m-d"){
$date=($date?$date:date("Y-m-d"));
$interval_param=array("s"=>1,"n"=>60,"h"=>3600,"d"=>86400,"ww"=>604800,"m" =>'',"yyyy"=>31556952);
if ($interval != "m")
return date($format,strtotime($date)+$interval_param[$interval]*$number);
else{
$dt_arr=getdate(strtotime($date));
return date($format,mktime($dt_arr[hours],$dt_arr[minutes],$dt_arr[seconds],$dt_arr[mon]+$number,$dt_arr[mday],$dt_arr[year]));
}
}
而且,我们可以看出,代码易懂,用户易于信任。从这一点看出,Zend Framework作为官方的PHP框架,这种缺陷是致命的。尽管我们清楚, Zend Framework的目标是挤掉所有非官方的框架。但从现实情况看,他们是在做梦!!
分享到:
相关推荐
Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend Framework •Zend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •...
Whether you are learning Zend framework from scratch or looking to sharpen up your skills from previous versions, Zend Framework 2 Application Development will help you to harness the power of Zend ...
ZendFramework-1.10.4
Zend Framework 2 官方教程汉化版
zend framework中英文手册,包含中文手册,英文手册两个版本。
zend framework zendframework manual 手册,Zend Framework手册 中文版,有一部分还没有汉化
Zend Framework 中文 手册 2008年12月01日.chm MD5: DD29C39D12E9C0B38FD3475A12D05B73 SHA1: 1A6BBBF9311013F2FF2BF97752332160ED767526 CRC32: 88210ABD Zend Framework 入门教程(简体中文1.52版)v0.12.pdf MD5:...
PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好...
zend framework zend framework zend framework zend framework zend framework zend framework zend framework
这是基于Zend Framework 框架的CMS PHP 源代码。 安装时请下载Zend及zendx并将其放在library下。
Zend Framework 3 Developer's Guide 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
zendframework1.9中文版用户手册 直接从网站上下载的离线版本 非常方便 这个是.chm的 还有.exe的版本,方便大家使用。
ZendFramework 1.12.9 代码和文档.rar
Zend Framework 3 Developer's Guide 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
ZendFramework安装1.11版 ZendFramework安装1.11版
自己编译的里面包含 ZendFramework 1.11.4 中文帮助手册 ZendFramework 1.11.4 api doc ZendFramework 1.11.4 的一个guestbook。 想要就下,不想要就看看.
ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5
zend framework手册,英文版,学习php最好的框架zend framework必备
zend framework1.0 中文教程
zend framework 中文手册,详细为你讲解zend framework使用