转:SPL 全面剖析
SPL(Standard PHP Library) IN PHP5
作者: 洪建家/Jiania E-mail:jiania@php.net
笔者认为下一步中大型PHP商业应用的主流的开发将会是以OO,OA软件开发模式主领潮流,从PHP5到PHP6,google
Trends足以证明这一点,过去传统的面向过程的开发模式将会被弃之,如果你是一位真正合格程序员,你会发现OO所带来的好处是深远的,不仅是软件工程
所带来的收益,而且此种思维理念对个人思维方式定有大的变革,你会发现你做事情开始OO方式,^_^,OO无处不在.
当然笔者不想去论述用面
向过程写PHP代码所带来的好处(如简单的应用),那种单人时代的开发方式如儿童时代已不适合需求复杂,变化过快的现代商业环境.笔者发现,如今支持面向
过程的开发者大多知识不够全,不够广.还不足以用OO来解决商业开发.当然这不是绝对,但一位有着C++,JAVA,
Smalltalk、EIFFEL等开发语言背景的程序员,他会无一不支持OO开发模式,相反网络知识框架基础较少,各种协议一知半解,只会PHP的开发
人员他们会觉得面向过程最适合他们.
不断有人在网上问笔者,目前主流的CMS我要用哪种来做二次开发,来做为中大型业务系统平台?其实这个问题很简单,几点就可以定义一个CMS的前景如何?
a.文档的完善与标准如何?
b.背后商业公司或是财团支持如何?
c.采用OO还是面向过程?
d.业务与显示是否分离与清晰?C OR VC OR MVC
e.数据结构如何,数据表优化如何?数据驱动支持?
f.开发进度如何?目前核心开发成员水平如何,要注意原核心团队的去留?
g.代码内置调试如何,代码纠错处理过程怎样?
h.有无自己核心开发框架?有无采用流行的框架?
i.权限管理等基础CMS功能如何?可扩展,或开发程度如何?
j.现在用户群如何?可通过google trends来找答案
综上所述,我们怎样选择CMS做二次开发.当然还有诸合目前本身团队的水平等等因素要想进去,希望决策者不要失误,以免将来损失惨重.
不管是二次开发,还是自己全部重新设计,我们都得要有一个大前提,那就是最大化提高系统平台生命周期,国内很多phper开发者,很多项目的生命周期短
得可怜,阅其代码坚酸难懂,接手的开发人员像被强奸的感觉, 笔者认为合格的PHP程序员应把代码看成是一种艺术,
一个好不好的操作平台是否拥有良好的可扩展性,布局,可维护性是其根本的基础.其核心框架必需高度抽象化,有良好的命名空间与对象接口,
这样才能算是进入贵族艺术编程世界.
一个项目的成功不是决定于技术的先进度如何,它有很多因素决定.在此,笔者就不在这里谈论如何运作网络商业,只谈PHP极限编程艺术世界.
下面笔者就带大家从草根程序员进入php 5,php6未来主流开发世界.目前不收大家门票,^_^.全部我买单了,让国内PHPER 体验PHP新的时尚世界.OK,开始我们的php贵族之旅!!!
Standard PHP
Library(PHP标准库,PHP5以后编译后自带的框架)为解决一些在Web开发中普遍的问题,提供了一系列的接口(interface)和类库
(classes)的。这些所有类库,你都可以在PHP编译本中找到(ext\SPL下的文件夹),基类文件在SPL.PHP等文件内,SPL提供了迭代
器(Iterator)、数组对象(ArrayObject)、运行期违例(RuntimeException
InvalidArgumentException……)、观察者模式(Observer Pattern)等一些解决方案。详情可参考官方的API.
查看SPL所有类与方法,我们可以用以下命令:
Pring_r(spl_classes());
我会详细说明此这9大接口的设计理念.PHP所有编程万变不离其中.
SPL有以下接口(9大接口)
1.ArrayAccess
2.Traversable
3.IteratorAggregate(继承Traversable,是他的儿子)
4.Iterator(也是继承Traversable,是他的儿子)
5.RecursiveIterator (继承Iterator,为Traversable的孙子)
6.Countable
7.Serializable
8.SplObserver
9.SplSubject
(接口分析未完成,更新中...)
错误处理是一大块:
下面来我讲讲PHP->SPL 关于错误处理方面的架构:
Exception 这是错误处理的接口,这是个值得一提,在所有程序中都会用到的父类.
笔者也想不通,为什么作者不作Exception做为一个接口呢???我得想想.
下面分为两大基类
一个是LogicException (逻辑错误处理类)
一个是RuntimeException(实时错误处理类)
两大错误处理下面还有很多子类....未完.分析更新中....