理解 Zend 框架

第 1 部分: 基础

Zend 框架究竟是什么呢?Zend 框架具有以下特征:

  • 是基于 PHP 建立的。
  • 是面向对象的。
  • 使用 MVC 范例。
  • 具有开放源码贡献者。
  • 有贡献者负责保证他们的代码不是他人的知识产权。

通过建立 MVC 模式,Zend 框架的目标是使编程生活更加轻松,这不仅体现在通用领域,而且对您始终想要做的具体的事情也是如此,比如访问数据库或输出 PDF 文件。(也许您一直都不输出 PDF 文件。但如果它更简单的话,我想您会去这样做的。)

Zend 框架组件包括:

Zend_Controller
此模块为应用程序提供全面的控制。它将请求转化为特定的行为并确保其执行。
Zend_Db
此模块基于 PHP 数据对象 (PDO) 并提供一种通用方式来访问数据库。
Zend_Feed
此模块使使用 RSS 和 Atom 提要变得简单。
Zend_Filter
此模块提供字符串过滤函数,如 isEmail()getAlpha()
Zend_InputFilter
对于 Zend_Filter,此模块是用来操作数组的,如表单输入。
Zend_HttpClient
此模块使您能轻易地执行 HTTP 请求。
Zend_Json
此模块使您能够轻易地将 PHP 对象转换成 JavaScript 对象符号,反之亦然。
Zend_Log
此模块提供通用日志功能。
Zend_Mail
此模块使您能够发送文本文件和多部分 MIME 电子邮件。
Zend_Mime
此模块被 Zend_Mail 用来解码 MIME 消息。
Zend_Pdf
此模块用来创建新的 PDF 文档,及加载和编辑现有文档。
Zend_Search
此模块使您能在现有文本上执行复杂搜索。例如,您可以建立一个搜索引擎,该引擎可以基于相关性或其他因素返回结果。
Zend_Service_Amazon、Zend_Service_Flickr 以及 Zend_Service_Yahoo
这些模块提供对这些 Web 服务 API 的简单访问。
Zend_View
此模块处理 MVC 模式的 “视图” 部分。
Zend_XmlRpc
此模块使您能够轻易地创建 XML-RPC 客户机。(已为将来计划好服务器功能。)

获得产品和技术

 

1 Zend_Acl
Access control list 实现角色对资源的权限模型.只是个概念,我正在用的权限方式基本上跟acl差不多,acl在权限方面并没有什么创新的.而且需要去扩展acl要写更大量的代码.不如自己写.

2 Zend_Auth
验证,只负责验证,传说中有HTTP认证和支持openID.对我来说只是传说…验证就是去对比一下是或否,然后分别操作.

3 Zend_Cache
缓存.这个比较有用,最起码教给我们一种最简单的缓存方法,一对if else,有缓存,读缓存,没缓存读数据库存缓存.zend_cache有三大特色,也就是让你用zend_cache不用其他的缓存的三个优势.1标识 缓存记录唯一性,省的自己做了.2生命周期,也省的自己做了.3条件执行…其实zend_cache最值得我们学习的是分开了前端和后端,这两个分别负责 不同的事情,后端负责存储,前端负责参数等等.关于缓存,基本上是系统有,程序有,服务器有,连smarty都有…

4 Zend_Config
传说中的操作配置,这个配置的操作在PHP中已经有支持,做的也不错.
Config中最好的是可以读xml格式…其实能读什么和xml的配置是什么格式都是zend规定的.我看了他们最常用的DB的配置.那种结构不是普通的配置文件.更多的层次.更多的规则.也许会更清晰吧.

5 Zend_Console_Getopt
帮助命令行程序解析它们的选项和参数.这句是抄来了.确实和现实的开发没什么关系,有人用过吗?听说可以把这句(rm * -fr)解释出来,但是解释出来后干什么???解释它做什么???

6 Zend_Controller
这个是最关键部分之一,zend最核心内容之一,最让PHPER感到zend可用的部分之一,

7 Zend_Currency
这个是处理钱的问题的,就是根据不同的地区,使用不同的货币格式.$1000 or ¥1000.

8 Zend_Date
典型的西方式的日期解决方案,就是关于日期型数据的操作.

9 Zend_DB
大多数项目所必须的,既然结合了zend来开发项目,就要看一看zend_db提供的类到底比我们的好在哪里.Zend_DB使用的是pdo,所以一定要打开这个扩展…费话.
仅次于Controller的zend第二大被经常使用的类.
包括各种数据库的操作封装,连select都有专门的使用方法.再也不用写完整的sql语句了?不好吧.反正我用到的只是其中一少部分.包括连接.查询.特别的插入,更新,删除操作.

10 Zend_Debug
这个用于调试,简单的调试.相当于echo $some;当然它会输出更详细的信息.

11 Zend_Exception
异常处理,Zend使用过程中的异常.有兴趣拿DB测试一下,自己抛着玩.

12 Zend_Feed
Web应用吧,可以试一下Feed:
http://Blog.csdn.net/mayongzhan/rss.aspx
Feed中最需要看的就是rss和atom,感觉atom更现代一点,最少是看上去比rss更好一些.

13 Zend_Filter
各种乱七八糟的过滤.需要的时候去查一下,也许你会发现php的函数使用起来会比这个东西方便.只是也许.

14 Zend_Form
这个东西似乎是为标准程序员准备的,所谓标准程序员就是一点也不考虑界面,当然标准程序员一定不是一个好的web程序员.没有web程序员不懂html的.呵呵.这个意义对我来说不大,对其他人我就不知道了.用来生成一个html表单.

15 Zend_Gdata
Gdata是Google Data的缩写,当然也就是google的东西,但是不包括著名的gmail,search,map.这个只是google data API

16 Zend_Http
当然zend做了很多有意义的事情.zend_http很像php的 curl,感觉没有curl强大,不过curl的操作有点不透明,使用起来感觉对了都不知道怎么对的.这个东西还需要改进啊.比如可以在这个东西的基础上 开发一个检测http的类.呵呵.我比较喜欢.

17 Zend_InfoCard
传说中的个人身份认证信息.只是传说中的,应用很少的.

18 Zend_Json
JavaScript Object Notation,这个东西负责对json的操作,其实就是编码解码…对json感兴趣的研究一下.

19 Zend_Layout
一个和view有关的,实现了二级视图的东西.这个我更习惯于使用zend controller或者shtml来解决.方法不同.

20 Zend_Loader
动态加载,当然是和静态的include做对比.可以根据需要加载.当然这是一个模糊的概念,不过确实省去了不少的工作.很不错的代码.效率?呵呵.

21 Zend_Locale
国际化?本地化?就当成是国际化的东西吧

22 Zend_Log
通用的log记录.Zend_log里 面最好的两个概念:1分级error级notice级等等,zend分了8级,2保存log,zend可以把log放到输出,数据库,文件当中

23 Zend_Mail
如果你正好要用mail,或者觉得原来的mail函数不够好的话,建议看看zend_mail.

24 Zend_Measure
用于转换,最简单的例子是把英尺转成公尺.

25 Zend_Memory
内存管理,恩.这个来头不小.程序级的内存管理.不了解…底层程序员也许会关心这个程序级的内存管理吧.

26 Zend_Mime
多用于mail函数的mime,当然也可以自己使用.

27 Zend_OpenID
OpenID啊.很火的东西,目的是整合世界上所有的帐号,不过现实的情况是每个厂商也不愿意被整合.都想着怎么整合别人.所以这个东西发展的不是很好.

28 Zend_Pdf
Pdf一种文件格式,是adobe的,就是电子书最经常用的格式.zend被宣传说支持pdf操作,

29 Zend_Registry
将一个东西(变量,数组,类…)注册到全局应用当中,就是write once use anywhere ,当然这个anywhere是指你的整个项目.开销是不是大了些?但是如果你经常用的话,这样做会很有帮助.免去了每次使用都要new class.

30 Zend_Rest
这个来头也不小.zend里面到处都是经典的程序.rest类似于xmlrpc和soap,是一种目前最新的web service,使用似乎没有xmlrpc多.也没有soap多.

31 Zend_Search_Lucence
基于文本的搜索引擎,当然是改编于那个Lucence,

32 Zend_Server
为其他zend的类提供支持.是一个基础类.当然也可以自己拿出来用.也许你能开发出来比rest更优秀的web service靠这个东西…

33 Zend_Service
网络上的除了google的各种服务,为啥要把google单拿出来呢?不好实现?还是google太强大 了…

34 Zend_Session
这个是个好东西,提供存储session和提供session的API,当然这个是为了跨域名,跨服务器准备的.当然也能代替传统的session_start()…如果你想这么做的话…

35 Zend_Translate
解决了语言问题...最另我高兴的是看到了zend使用.mo文件.这个mo文件是在drupal里的语言包.zend做的不错.

36 Zend_Uri
验证url的类,这个也是基础,是被其他zend成员调用的.也能自己用.

37 Zend_Validate
校验器,前面有个filter是过滤的.这个是验证的.本质都是一样的.是判断是否符合规则,然后validate是返回对错.filter是直接把不符合的地方去掉.当然我们大家一定都有自己的过滤和校验器.好好的参考一下zend ,然后进行修改吧.

38 Zend_Version
这个是zend里源码最好读的一部分…是最简单的.建议无论是否想学习zend都去看一下…

39 Zend_View
Zend MVC当中一员.也能算上是五虎上将之一.不过在我这却没有被使用…我使用了smarty作为替换…感觉有点对不住zend,zend这么多东西,我只用 了几个…哎…不过zend_view的helper很不错.可以替代手写,生成各种需要在view层显示的代码.

40 Zend_XmlRpc
Web service,xmlrpc是最简单的一种.当然zend的这的类也是完成80/20使命.我想用的人很少吧.

Zend也挺符合2/8理论的,20%的程序被经常使用.剩下的用的很少.但是作为一个完整的framework,zend是经典的.

还有
Zend_Acl 每个人理解不同,我开始用zf做项目,权限也是自己写,后来全部重写为Zend_Acl,因为个人觉得Zend_Acl和Zend_Auth结合用不错

Zend_Filter 虽然我写的model底层类的那些基本的过滤都是直接用php函数,毕竟速度快,也方便,但这个只是基础,很多时候不同表单牵涉不同的过滤,例如ip地址过滤等等,那么就需要自己写filter了,而zf提供了这样一个不错的机制

Zend_Form 基本可以做出你想要的画面,不过非常麻烦,所以还是建议程序后台或对画面要求不高的程序使用,不过换个思路,有时候前台也是可以用Zend_Form的, 比如我建立一个Zend_Form类,但只用它的验证,这样既保证了美观,又保证了程序的可读和可维护性

Zend_Loader 基本不用,因为使用了Zend_Loader::registerAutoload();函数,但是这样会影响效率,解决方法是把zf类库中所有程序中的require_once(Zend_xxx)这样的语句都删除

总结:其实zend_framework就相当于一个php写的类库,功能强大的同时,也牺牲了一定的性能,不过如果遵循mvc开发,个人认为可维护性很强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值