简介
PHP4.0整个
脚本程序的核心大幅更动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统
CGI或者
ASP等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。无论您接不接受,PHP
都将在 Web CGI 的领域上,掀起巅覆性的革命。对于一位专业的Web Master 而言,它将也是必修课程之一。
PHP 4.0是更有效的,更可靠的动态Web页开发工具,在大多数情况运行比 PHP
3.0要快,其脚本描述更强大并且更复杂,最显著的特征是速率比的增加。PHP4.0这些优异的性能是PHP
脚本引擎重新设计产生的结果:引擎由AndiGutmans和Zeev Suraski从底层全面重写。PHP4.0 脚本引擎
——
Zend引擎,使用了一种更有效的编译——执行方式,而不是PHP 3.0 采用的执行 ——当解析时
模型。
优越性
PHP4在3.0版的基础上增加或增强了许多有用的特征,主要如下:
(1)别名:在PHP4中,可以利用引用为变量赋值,这给
编程带来了很大的灵活性。
(2)扩充了
API模块:PHP
4.0 为扩展的 API 模块的提供了扩展PHP接口模块,它比旧的 API 版本显著地快。PHP
模块已有的及最常用的接口多数被转换到使用这个扩展的接口。
(3)自动资源释放:PHP4增加了引用计数功能,这种新技术的引入使PHP4具有了自动
内存管理功能,减轻了开发人员的负担。
(5)进程生成:在 UNIX 环境下的 PHP 4.0
提供了一个很智能和通用的生成进程,使用了一种名为基于automake/libtool的系统生成技术。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 仅用于Windows 环境 )
可以无缝地存取和访问 COM 对象。
(7)与PHP 3.0 兼容性很好:PHP 4.0 是与 PHP 3.0 代码向后
兼容性接近100%。由于 PHP 4
的改进的体系结构,两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。
(8)配置:PHP4重新设计和增强了PHP.ini文件,这使得用PHP.ini来
配置PHP显得极为容易,这个文件可以在运行时被Apache(unix系统)或由Windows 注册(Windows
环境)。
(9)加密支持:PHP4实现了完整的加密,这些加密功能是一个完整的mycrypt库,并且 PHP 4.0
支持哈希函数。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。
(10)类型检查:PHP 4.0 支持同一操作符用于评类型检查:===(3 等号
运算符,恒等计算符),为在两个值和其类型之间作检查。例如,‘3‘ ===3 将视为假 ( 类型是不同的),而 3 ==3
( 相等判断,不比较类型 ) 将视为真。
(11)FTP 支持:PHP 4.0 支持
FTP。通常,你会为通过一个调制解调器连接下载一个大文件提供一个接口。然而,如果你确实有需要,可以使用PHP。
(12)PHP4新增函数或功能增强函数:PHP 4.0 新增了许多
函数,同时也将许多现有的函数功能进行了增强,以下是一些例子。
array_count_values() eval() foreach() include()
ob_end_clean() ob_end_flush() ob_get_contents() ob_start()
strip_tags() unset()。
(13)here打印:PHP 4.0
的Here打印是与Perl类似的,尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如在
HTML文件中,不会漏掉任何一个字符,例如目录标记。
(14)HTTP Session fallback 系统:为 HTTP Session管理的一个 fallback 系统在
PHP
4.0被实现。缺省情况下,Session标识符由cookies存储。如果没有cookies支持或一项cookies任务失败,Session标识符自动被创建并在
URL 的查询字符串中被携带。
(15)ISAPI 支持:PHP 4.0 能作为一个
个性化的 ISAPI 模块作为
IIS插件。这比 PHP 3.0 更有效,它作为一个外部的程序来运行。
(16)内存:PHP 4.0 能更有效的使用
内存,导致较少的内存占用消耗,这主要归功于引用计数技术的实现。⒄其他类
成员函数:在 PHP 4.0 你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。例如,你能用一个子
函数覆盖父函数,并在子函数中调用父函数。
(17)多维
数组:在
PHP 4.0 ,利用GET,POST,Cookies的进行的数据传输支持多维数组。
(18)个性化的 HTTP
Session支持:HTTP Session处理,包括 fallback
系统管理,在 PHP 4.0被它的新库函数实现。在版本 3.0 中处理Session要求使用 PHPLIB 和
第三方的库函数,它比把Session直接地由 PHP 支持慢了许多。
(19)个性化的 Java 支持:PHP 4.0 支持和java的交互。这种个性化的Java 支持为PHP 在 Java
对象上创建和使用方法提供一个简单并且有效的工具。
(20)对象和数嵌套组:PHP 4.0 实现了功能更加强大的对象,移去了 PHP
3.0存在的种种句法限制。对象能在数组以内被嵌套并且反过来也如此,可以根据你的需要实现嵌套。
(21)面向对象的
编程:PHP 4.0
为面向对象的编程和构造类及对象提供扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。
(22)对象
重载支持:对象重载语法允许第三方的基于面向对象的类库使用
PHP4 的面向对象的特征存取他们自身的功能。使用这个特征的一个 COM 模块已经被实现了。
(23)输出缓冲支持:PHP 提供了一个输出缓冲函数集合。输出缓冲支持允许你写
包裹函数功能压缩
缓冲区。在 PHP4 的输出缓冲支持允许 HTML 头信息存放,无论 HTML的正文是否输出。头信息(
(header(),content type,and cookies ) 不采用缓冲。
(24)增加了
PCRE库:PHP 4.0 包括一个 Perl 兼容的
正则表达式(PCRE ) 库,和正常regex库一起与 PHP 绑定。split 和replace PCRE
功能被支持。PCRE 和 Perl 正规表达式之间有一些细微差别。
(25)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新设计,使用的 PHP
的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在运行时间操作 ( 在 Apache环境 下 ) 或由 Windows 注册表 ( 在
Windows 下面 )。被加入PHP.ini文件的配置指令自动地在所有相关的模块中被支持。
(26)引用计数:PHP 4.0
为系统中的每个数值提供了引用计数,包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用这个特征的最明显的例子一个内置SQL查询的循环语句。在PHP
3.0中 ,每次递归另外的 SQL 结果集合重复申请内存,直到脚本执行完毕,这些结果集合占用的内存才被释放。
(27)支持引用:通过引用可以改变一个变量的值。
(28)函数的运行时绑定:PHP 4.0
的运行时间绑定功能允许你在他们被声明以前调用,无论声明是否在代码以后或是在运行时间。
(29)类的运行时信息:PHP 4.0
支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。
(30)
服务器抽象层:为支持Web服务器提供了增强型
SAPI ( 服务器 API ) 接口,是 PHP 4.0 不可分的一部分。这个服务器抽象层,提供了通用的
WEB服务器接口支持,支持
多线程WEB服务器,为大多数的WEB服务器提供透明的支持,这些服务器包括 Apache,IIS ( ISAPI ),以及
AOL 服务器。
(31)语法的点亮显示:PHP 4.0 语法的点亮显示允许开发者看见源代码而不是脚本,这个功能比PHP
3.0中的更有效。它跑得更快,更执行得更好,并且产生更紧凑的HTML代码。
(32)由引用改变
变量的值:PHP 4.0
由引用支持可变的赋值,“关联”的2个变量之中个的任何一个的值被改变,另外的变量的值同样被改变,这类似与C中的指针类型。
(33)在引用字符串中的变量引用:PHP 4.0 增强了在引用字符串中的变量引用。
11PHP5编辑
PHP5在长时间的开发及多个预发布版本后,2004年7月13日,PHP5.0发布。该版本以
Zend引擎Ⅱ为引擎,并且加入了新功能如PHP Data Objects(
PDO)。PHP5.0版本强化更多的功能。首先,完全实现面向对象,提供名为
PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了
XMLWeb服务支持,而且标准支持SOAP扩展模块。数据库方面,PHP新版本提供旨在访问MySQL的新界面——
MySQL。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared
Statement)等MySQL的新功能.另外,PHP5.0上还捆绑有小容量RDBMS-SQLite.
新对象模式
*
构造函数和
析构函数 *
对象的引用 * 对象的克隆 * 对象中的私有、公共及受保护模式 * 接口 (Interfaces)
* 抽象类 * __call * __set 和 __get * 静态成员
构造函数和析构函数
在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为
__destruct。
对象的引用
在PHP4中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号“&;”
来声明是要做一个引用,而不是一个 Copy。在 PHP5中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。
对象的克隆
当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5
提供了一个新的功能,就是对象的克隆,语法为 __clone。
抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
__call
PHP5 的对象新增了一个专用方法
__call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
类型指示
在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。
静态成员
静态成员和静态方法在面象对象编程的术语中被称作 “类方法(class methods)” 和 “类变量(class
variables)”。
“类方法” 在一个对象没有实例化前允许被调用。同样,“类变量”
在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。
异常处理
异常处理是公认的处理
程序错误的理想方法,在 Java 及 C 中都有这个概念,我们欣喜的看到,在 PHP5
已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在
“catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为我们可以把所有的错误信息交给一个对象来处理。
自定义错误处理
你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个
getMessage 方法。
命名空间
名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
例:名称空间
1
2
3
4
5
6
7
8
9
10
11
12 |
<?php
namespacemy\name;
classMyClass{}
functionmyfunction(){}
constMYCONST=1;
$a =newMyClass;
$c = new \my\name\MyClass;
$a = strlen ( ‘hi‘ );
$d = namespace \MYCONST;
$d =__NAMESPACE__. ‘\MYCONST‘ ;
echoconstant( $d );
?>
|