上一节我们讲的是Zend Framework中相对于基本编程规范的违规。也许有人会说,这种违规是可以忍受的。代码中一些地方的烦琐有时是必须的。我们可以接受这样的不同意见。那么,如果一个框架在面向对象的基本原则中违规,那你还可以忍受吗?
设计模式和代码重构理论,是基于基本的面向对象的基本原则。这里我们有必要先讲一下这些基本原则:
开闭原则(OCP):对可变性进行封装。对象必须能对自己负责。这与单一职责的原则是完全一致的。
里氏代换原则(LSP):如何进行继承。继承必须维护遗传。而不能产生变异。这里的变异是指破坏了原有的结构与数据关系。
依赖倒转原则(DIP):要针对接口编程。不要针对实现编辑程。抽象不应当依赖于细节;细节应当依赖于抽象。
接口隔离原则(ISP):恰当地划分角色和接口。使用多个专门的接口比使用单一的总接口要好。
合成/聚合复用原则(CARP):尽量使用合成、聚合,尽量不使用继承。继承是“Is-A”关系。合成/聚合是“Has-A”关系。
迪米特法测(LoD):不要和陌生人说话。即:不存在对间接关系类的任何操作。
这六大原则,相对于初学者,也许过于抽象。不过,不要紧,我们下面的缺陷分析,有助于你对这些原则有一些具体的认识。
假如你是一个系统架构师,那么,你现在也许会说,我说的情况,在Zend Framework中根本不存在。
那么,我们还是从更具体的实例进行分析吧。
Zend Framework中有很多地方完全属于烂用依赖倒转原则(DIP)。简单来说,假如变化本身,只是一个方法,一个函数,相对于PHP,我们根本不需要使用依赖倒转原则为此定义出一个接口,并让用户去写只有一个方法的类,产生一堆这样的类文件。
一个实例:Zend Framework中的Filter类,就是这种不良代码的典型!!这样做的坏处,那就是,变化的一切均分布在不同的类中。不仅不易于管理,同时也影响效率。另一方面,PHP5,提供了 __call, call_user_fuc, call_user_fuc_array, 所有这一切,均是为给这一种特别的聚合提供方便。凭错这些,我们可以直接增加函数列表,而函数列表,相对于代码管理,更加方便,并且,单一方法上的添加,可以直接使用继承法。但直接继承的结果,则是破坏了类与类之间的偶合。但如果是真的松耦合,那继承就没有什么关系。
一种放松耦合的实现方式,即使用相关的配置,并使用createInstance一类的方法,创建指定的类的实例,这可能是一种高难度。一般架构师或程序员不一定能设计出这样的代码。
最后,还需要说的是, Zend Framework中的Filter类即便是目前这样,也应当写得更好,Filter现在是把Filter与validate给混淆了。同时,所谓的链式操作,实际仍是不方便的操作,PHP函数,原本就可以接受不定数量的参数,所以,完全可以不用链式操作,而一次性传入所有要过滤的类型。但它没能做到。再有就是,输入与输出,原本应当要分开的,但却也是搅合在一起。假如,一个编辑器,输出是的 23,456,321这种格式的数字,表单提交后,用户很容易会直接使用整数过滤器。则肯定会出错。
Zend Framework中实际这样的实例是相当多的。这里就不多说了。
附:非常高兴,已经看到有人拍砖了,参见:
http://www.netroby.com/article-1706.html
由此:这里需要声明一下:此文的目的,不是为了抵毁Zend Framework,而根本的目的,是在于两点:其一,教会大家,如何选择自己合适的开发框架;其二:让一些“框架开发者”清楚,一个框架究竟要做成什么样子。特别是,国内那些希望自己的框架能够拥有用户的开发者。很多是不了解一个大型企业开发的实际需求,闭门造车。个人观点,一个真正完全了解Zend Framework缺陷的人,才能开发出有拥户的有技术含量的框架,如同CI架构,确实是改观了一种缺陷,但只能用于小型网站,或许,它的定位就是如此。但如果拿它与Zend Framework相比,它就是一种玩具! 第三,我所识为的缺陷,也很可能是认识上的误区。因而,在此能引得同道的共同探讨,则有利于彼此的进步。
所以,继续希望有人拍砖,但骂街性质的,强词夺理的(比如:说什么Zend Framework2.0肯定会改掉这些缺陷等观点),本人不会理会。所以只能说声抱歉。
热烈欢迎一切理智的技术讨论。
分享到:
相关推荐
"ZendFramework-1.10.4-minimal" 这个标题表明我们正在处理的是 Zend Framework 的一个特定版本,即1.10.4,并且是精简版(minimal)。这意味着它可能包含了框架的核心组件,但可能去除了某些非必要的或附加的模块,...
5. **测试和调试**:利用 Zend Framework 的测试工具进行单元测试和集成测试,确保代码质量。 总之,无论您是初学者还是经验丰富的开发者, 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 ...
描述提到"zend framework zendframework manual 手册,Zend Framework手册 中文版,有一部分还没有汉化",这意味着虽然该手册是中文版本,但可能并非全部内容都已翻译完成,部分原文可能是英文状态。 **Zend ...
Zend Framework推崇“选择性使用”原则,开发者可以根据项目需求选择使用其中的部分或全部组件,极大地提高了开发效率和代码质量。 **二、CMS系统的核心功能** CMS系统通常包含以下核心功能: 1. **内容创建与...
Zend Framework 2 官方教程汉化版
**Zend Framework 1.12.9:框架详解与应用** **一、Zend Framework简介** Zend Framework(简称ZF)是一款开源、基于PHP语言的企业级Web应用程序开发框架。它遵循MVC(Model-View-Controller)设计模式,为开发者...
Zend Framework 中文 手册 2008年12月01日.chm MD5: DD29C39D12E9C0B38FD3475A12D05B73 SHA1: 1A6BBBF9311013F2FF2BF97752332160ED767526 CRC32: 88210ABD Zend Framework 入门教程(简体中文1.52版)v0.12.pdf MD5:...
在Zend Framework中整合Smarty模板引擎,可以让开发人员利用Zend Framework强大的框架特性和Smarty简洁的模板语法来创建更为复杂和功能丰富的Web应用。以下是整合Zend Framework与Smarty时需要了解的相关知识点。 ...
Zend Framework教程之Zend_Layout布局助手详解重点介绍了Zend Framework中Zend_Layout组件的使用方法。Zend_Layout是一个用于管理布局的组件,它允许开发者定义应用程序的布局结构,使得可以在不同的页面中复用相同...
- **PHP 5**:作为运行环境,Zend Framework要求PHP 5或更高版本。 - **Apache Web Server**:为了更好地演示示例代码和利用`mod_rewrite`模块的功能,你需要一个Apache服务器。`mod_rewrite`用于URL重写,使URL更...
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 是一个开源的、基于组件的PHP框架,用于构建可扩展、高性能的Web应用。版本1.7.5是该框架的一个重要里程碑,提供了丰富的功能和改进,旨在提高开发效率。在...
Zend Framework 遵循 Model-View-Controller (MVC) 设计模式,它将应用程序的业务逻辑、数据和用户界面分离开来,使得代码更易于维护和扩展。在 MVC 架构中,Model 负责处理业务逻辑,View 负责展示数据,而 ...
这个“最新版本”指的是 Zend Framework 的 1.11.10 版本,它包含了 MVC(Model-View-Controller)架构模式,这是 Web 开发中常用的设计模式,用于分离应用程序的不同部分,提升代码的可读性和可维护性。 1. **MVC ...
Zend Framework 是一个基于组件的 PHP 开发框架,由 Zend Technologies 公司创建并维护,被PHP官网推荐为MVC(Model-View-Controller)框架之一,尤其适合构建企业级的Web应用。本教程将深入讲解 Zend Framework 的...
5. **服务层(Zend_Service)**:这一组件允许开发者轻松集成第三方服务,如 Amazon S3、Twitter 和 Google Maps。手册会指导如何使用这些服务并进行数据交换。 6. **RESTful Web Services(Zend_Rest)**:手册将...
Zend Framework 3 Developer's Guide 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书