PHP5

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;//参考"namespace操作符和__NAMESPACE__常量”小节

$d=__NAMESPACE__.‘\MYCONST‘;

echoconstant($d);//参考"命名空间和动态语言特征"小节

?>

注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。

加密

从PHP5.3开始支持ZendGuard加密方式,必须安装Zend Guard Loader,老的zend optimizer将不被支持。

Linux安装Zend Guard Loader支持的过程:

操作系统为CentOS5.5,PHP版本为5.3.8(CentOS5.5中的PHP默认版本较低,如果要升级到PHP最新版,可以使用remi的report源进行升级)。

Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache。所以安装的话,就需要安装在iis或者和nginx搭配。

1、下载最新的Linux操作系统系下的Zend Guard Loader。

2、上传至Linux服务器并解压缩,注意阅读生成目录下的README文件。全文如下(添加必要的注释)。在/etc/php.d/目录下创建文件zend.ini,内容如下:


1

zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so

注意路径一定要写上,刚开始没写路径,老是加载不上ZendGuardLoader .so,也可以直接将上面的配置写入/etc/php.ini文件中,效果一样。

3、重启httpd服务:service httpd restart。

4.输出<?php phpinfo(); ?>

PHP 5.5 正式版发布 不再支持 Windows XP

同时 PHP 开发者也提醒用户,PHP 5.5 也包含一些不向后兼容的内容,包括:不再支持 Windows XP 和 2003 系统;不区分大小写的匹配函数、类;常数名称跟 Locale 无关,这对一些使用非 ASCII 代码的常量名的开发者需要注意的。

时间: 2024-10-06 11:16:05

PHP5的相关文章

entos上PHP5.3升级到PHP5.4及更高版本方法

yum配置 执行命令下载.安装yum源,当前是针对Centos6并且64位版本的源: [[email protected]_249 yum.repos.d]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm[[email protected]_249 yum.repos.d]# rpm -ivh ht yum配置执行命令下载.安装yum源,当前是针对Centos6并且64位版本的

iis6.0+php5.6无法加载firebird模块

前日一新项目,内容为将客户代码数据从本司开发服务器迁移至客户服务器 客户服务器环境:windows2008 iis6+php5.5.7+mysql5.6 代码使用加载使用firebird.dll扩展模块 但在php.ini中已经将extension=php_pdo_firebird.dll打开 在phpinfo信息页面还是无法显示加载 经google后,有人遇到过此类的情况,解决方法如下: 下载解压Firebird-2.5.6.27020-0_x64.zip包,点击下载 将lib目录下的fbcl

php5.5以上版本编译扩展模块方法

在编译php5.5以上版本的时候发现,直接下载扩展包编译安装不太好用.其实这个版本以上的php在自身的ext的目录中已经放了不少的扩展模块,编译好了,模块就直接加载进来了.如图: 拿pdo_mysql这个模块为例,进入到这个目录中执行命令phpize,之后出现问题了 根据错误提示确定缺少了某些的包,执行命令安装这些包 yum –y install autoconf yum –y install m4 安装完这两个包之后在执行phpize后没有报错了 然后执行命令 ln -s /usr/local

ubuntu php5.6源码安装

今天又花了一天时间装了php,感觉php的源码安装也挺麻烦的,整个过程各种报错. 下篇文章准备整合所有查找到的报错和解决方法. php和nginx一样,在安装前需要装一堆的依赖.有libmcrypt.mcrypt.mhash.其实远不止这三个包,在后面的configure和make中还会陆陆续续安装一些依赖. 1.安装libmcrypt.mcrypt.mhash(整个过程都在/usr/local/src/php目录下) #创建/usr/local/src/php目录并进入mkdir /usr/l

CentOS6.5编译安装Nginx1.70 +PHP5.59+MySQL5.6.16

下载软件工具包: 1.下载nginx http://nginx.org/download/nginx-1.7.0.tar.gz 2.下载pcre (支持nginx伪静态) http://jaist.dl.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 4.下载MySQL5.6.16 http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.16.tar.gz 5.下载php-5.5.9 ht

在CentOS/RHEL 6.2上使用YUM安装PHP5.4

核心命令 rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm    yum install php54w 以下转自样例: php5.4于2012年5月8号发布,从php5.4.0开始php加入了一些新特色如: Traits支持 内置了一个简单的Web服务器 提供了数组简短语法 直接对函数返回值进行数组取值 最终删除魔术方法及安全模式 你可以在这里看到更新日志. 这里使用 Webtatic EL6的YUM源来安装php5.4,我们首页安装Web

CentOS 编译安装php5.5, 并配制支持apach,nignx核心代码

首先是编译准备工作: yum groupinstall "Development tools" 然后是编译安装 PHP 5.5.x 需要用到的 devel 包: yum install libxml2-devel gd-devel libmcrypt-devel libcurl-devel openssl-devel 从官方下载,解压: wget http://us3.php.net/get/php-5.5.5.tar.gz/from/cn2.php.net/mirror tar -x

PHP5.2至5.6的新增功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那"集百家之长"的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征. PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数

PHP-5.3.27源码安装及nginx-fastcgi配置

源码安装php cat /etc/redhat-release uname -rm wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install -y zlib-devel libxml2-devel libjpeg-turbo-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel opens

wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)

首先需要搭建的版本可以在php官方(http://windows.php.net/download)下载对应的版本,X86对应的是32位操作系统,X64对应的是64位操作系统. 1:下载之后解压,把解压的压缩包放在wamp安装目录bin目录下的php文件夹下,同时注意把文件夹名称改成符合wamp规范的名称,比如解压过后名称是php-5.6.19-Win32-VC11-x64要改成php5.6.19记住不要有横杆. 2:然后打开wamp自带的php5.5.12版本文件夹,发现比普通官方文件多了两个