SPL 全面剖析
SPL 全面剖析
来自百度百科 http://baike.baidu.com/view/1130234.htm?fr=aladdin
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编译本中找到(extSPL下的文件夹),基类文件在SPL.PHP等文件内,SPL提供了迭代器(Iterator)、数组对象(ArrayObject)、运行期违例(RuntimeException InvalidArgumentException……)、观察者模式(Observer Pattern)等一些解决方案。详情可参考官方的API.
查看SPL所有类与方法,我们可以用以下命令:
Pring_r(spl_classes());
SPL 全面剖析的更多相关文章
- 探索C#之6.0语法糖剖析
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...
- jQuery之Deferred源码剖析
一.前言 大约在夏季,我们谈过ES6的Promise(详见here),其实在ES6前jQuery早就有了Promise,也就是我们所知道的Deferred对象,宗旨当然也和ES6的Promise一样, ...
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- 《AngularJS深度剖析与最佳实践》简介
由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...
- 探索c#之Async、Await剖析
阅读目录: 基本介绍 基本原理剖析 内部实现剖析 重点注意的地方 总结 基本介绍 Async.Await是net4.x新增的异步编程方式,其目的是为了简化异步程序编写,和之前APM方式简单对比如下. ...
- PHP 高级编程(4/5) - SPL异常类之 LogicException 逻辑异常
SPL 提供了一系列标准异常.日常的使用中我们应该根据需求科学的使用它们,来使我们的程序更加健壮.LogicException 是从 Exception 基类派生的,没有添加任何附加方法.抛出逻辑异常 ...
- PHP 高级编程(3/5) - 使用SPL(标准PHP库)实现观察者模式
SPL(标准PHP库 - Standard PHP Library)是PHP5面向对象功能中重要的部分.原文解释是这样的“The Standard PHP Library (SPL) is a col ...
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...
随机推荐
- 算法系列5《SSF33》
SSF33算法是以128位分组为单位进行运算,密钥长度为16字节,该算法也可以被用于安全报文传送和MAC机制密文运算. 使用SSF33算法和基于3-DES的对称加密机制使用相同长度的密钥,能够同原有的 ...
- linux系统设置-防火墙
基础知识 Linux系统内核内建了netfilter防火墙机制.Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放 ...
- AppCan应用开发之插件实践篇-支付插件
电商O2O无疑是目前最受用户欢迎的APP类型,而在这类APP中必不可少的就是在线支付功能了.在AppCan平台开发这类应用时,官方封装了微信支付.支付宝.银联等多种支付SDK,更接入了多家聚合支付平台 ...
- 自定义Drawable
本文由 伯乐在线 - treesouth 翻译,toolate 校稿.未经许可,禁止转载! 英文出处:ryanharter.com.欢迎加入翻译小组. 我们看过一些博客文章,讲述了为什么要适时地使用自 ...
- 38.基于FPGA的FIR设计二
利用fdatool工具生成的滤波器系数与用代码生成的系数不一致,在网上查询得知,fdatool生成的滤波器系数是有符号小数,而且是浮点型,而代码生成的滤波器系数是定点型有符号数,故不一样. 浮点型数据 ...
- ajax 例子
引用 function initCsvModel(year,cityId){ var args = new Object(); args.url= "listUpload!initCsvMo ...
- 【BZOJ 1033】 [ZJOI2008]杀蚂蚁antbuster
Description 最近,佳佳迷上了一款好玩的小游戏:antbuster.游戏规则非常简单:在一张地图上,左上角是蚂蚁窝,右下角是蛋糕,蚂蚁会源源不断地从窝里爬出来,试图把蛋糕搬回蚂蚁窝.而你的任 ...
- 微软职位内部推荐-Software Engineer II-Web app
微软近期Open的职位: The Office App Services team is working on the powerful Office Web Apps including Word ...
- Microsoft Dynamics CRM 2013 安装过程图解及安装序列号
Microsoft Dynamics CRM 2013 安装过程 图解 在安装前,先持一下SQL配置管理,将相关的服务打开.(由于在虚拟机里,许多服务需要时才会打开,像Reporting Serv ...
- ScrollView图片分页显示-简单
用到的控件: 1>UIScrollView:宽度和图片的宽度一样,因为分页的代码就一句 // 设置分页,这个分页的原理实际上是按照ScrollView的宽进行分页的,这里的图片的宽由于和Scro ...