`
bardo
  • 浏览: 378304 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11807
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10116
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9501
社区版块
存档分类
最新评论

Zend Framework的缺陷(连载之4)

    博客分类:
  • PHP
阅读更多
    上一节我们说到,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的目标是挤掉所有非官方的框架。但从现实情况看,他们是在做梦!!
1
1
分享到:
评论
4 楼 bardo 2010-06-16  
yibn 写道
看了你的Zend Framework的缺陷连载,因为最近也在开发一个框架,原因是以前用过的几个框架都不满意,其中包括zend,学习的成本太大,还有一点就是性能问题.

另外有点疑问:switch case确实有硬编码的问题,但不至于对它对此极端吧?适当时候它也有自己的妙用的.

switch case 在封闭的结构数据中确实可以用的。但问题是我们需要判断,哪些是封闭的,哪些是开放的?同时,switch case结构,如果case太多,则程序会变得相当难懂的。同要也需要使用不设计模式取代。
3 楼 yibn 2010-06-16  
看了你的Zend Framework的缺陷连载,因为最近也在开发一个框架,原因是以前用过的几个框架都不满意,其中包括zend,学习的成本太大,还有一点就是性能问题.

另外有点疑问:switch case确实有硬编码的问题,但不至于对它对此极端吧?适当时候它也有自己的妙用的.
2 楼 alan.hee 2010-05-23  
not bad!
1 楼 JetMah 2010-05-15  
这个连载4貌似说的跟连载3一个问题,知不是这里举了个具体的例子而已,呵呵。
不过拍的很好,继续拍~~

相关推荐

    ZendFramework-1.10.4-minimal

    4. **面向对象编程**:Zend Framework 完全基于 PHP5,支持 OOP,鼓励开发者使用接口和抽象类,提高代码的可扩展性和可维护性。 5. **服务导向架构**:通过 Zend_Soap 和 Zend_Rest,开发者可以轻松地创建和消费 ...

    zend framework中英文手册.rar

    4. **依赖注入**:理解依赖注入的概念,以及在 Zend Framework 中的应用。 5. **测试和调试**:利用 Zend Framework 的测试工具进行单元测试和集成测试,确保代码质量。 总之,无论您是初学者还是经验丰富的开发者...

    ZEND FRAMEWORK 1.11.7 中文参考文档

    Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend Framework •Zend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •...

    Zend Framework 2 Application Development

    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 ...

    zend framework 中文手册

    4. **ZF1 版本**: "ZendFramework-1.9.2" 指的是 Zend Framework 1.x 系列的一个版本,1.9.2 是这个系列的一个稳定版本。每个版本都会修复已知问题,增加新功能,或者优化性能。 5. **中文手册的重要性**: 对于中文...

    基于Zend Framework 框架的CMS PHP 源代码

    Zend Framework推崇“选择性使用”原则,开发者可以根据项目需求选择使用其中的部分或全部组件,极大地提高了开发效率和代码质量。 **二、CMS系统的核心功能** CMS系统通常包含以下核心功能: 1. **内容创建与...

    Zend Framework 2 官方教程汉化版

    Zend Framework 2 官方教程汉化版

    ZendFramework 1.12.9 代码和文档.rar

    **Zend Framework 1.12.9:框架详解与应用** **一、Zend Framework简介** Zend Framework(简称ZF)是一款开源、基于PHP语言的企业级Web应用程序开发框架。它遵循MVC(Model-View-Controller)设计模式,为开发者...

    Zend Framework+smarty用法实例详解

    在Zend Framework中整合Smarty模板引擎,可以让开发人员利用Zend Framework强大的框架特性和Smarty简洁的模板语法来创建更为复杂和功能丰富的Web应用。以下是整合Zend Framework与Smarty时需要了解的相关知识点。 ...

    Zend Framework教程之Zend_Layout布局助手详解

    Zend Framework教程之Zend_Layout布局助手详解重点介绍了Zend Framework中Zend_Layout组件的使用方法。Zend_Layout是一个用于管理布局的组件,它允许开发者定义应用程序的布局结构,使得可以在不同的页面中复用相同...

    Zend Framework实例教程

    ### Zend Framework实例教程知识点解析 #### 一、简介与安装要求 **Zend Framework**是一款开源的PHP框架,设计用于帮助开发者构建稳定、高效且可扩展的Web应用。本教程聚焦于介绍Zend Framework的核心特性和如何...

    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 教程 很好PHP zend framework 教程 很好...

    zend framework 1.7.5 使用基本例子

    **Zend Framework 1.7.5 基本使用教程** Zend Framework 是一个开源的、基于组件的PHP框架,用于构建可扩展、高性能的Web应用。版本1.7.5是该框架的一个重要里程碑,提供了丰富的功能和改进,旨在提高开发效率。在...

    ZendFramework中文手册HTML版

    Zend Framework 遵循 Model-View-Controller (MVC) 设计模式,它将应用程序的业务逻辑、数据和用户界面分离开来,使得代码更易于维护和扩展。在 MVC 架构中,Model 负责处理业务逻辑,View 负责展示数据,而 ...

    ZendFramework最新版本

    这个“最新版本”指的是 Zend Framework 的 1.11.10 版本,它包含了 MVC(Model-View-Controller)架构模式,这是 Web 开发中常用的设计模式,用于分离应用程序的不同部分,提升代码的可读性和可维护性。 1. **MVC ...

    zend framework教程.zip

    Zend Framework 是一个基于组件的 PHP 开发框架,由 Zend Technologies 公司创建并维护,被PHP官网推荐为MVC(Model-View-Controller)框架之一,尤其适合构建企业级的Web应用。本教程将深入讲解 Zend Framework 的...

    zend framework 中文版手册(最新)

    4. **表单处理(Zend_Form)**:Zend_Form 提供了强大的表单构建和验证功能,包括元素(Elements)、装饰器(Decorators)和验证规则(Validators)。开发者可以通过手册学习如何创建复杂的用户输入表单。 5. **...

    Zend Framework 3 Developer's Guide azw3

    Zend Framework 3 Developer's Guide 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

Global site tag (gtag.js) - Google Analytics