php4和php5区别是什么?

php(做为现在的主流开发语言)5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 php(做为现在的主流开发语言)5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 php(做为现在的主流开发语言)5 之旅的一个新起点吧。:)

* 构造函数和析构函数
* 对象的引用
* 对象的克隆
* 对象中的私有、公共及受保护模式
* 接口 (Interfaces)
* 抽象类
* __call
* __set 和 __get
* 静态成员

构造函数和析构函数

在 php(做为现在的主流开发语言)4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 php(做为现在的主流开发语言)4 中没有析构函数的概念。
在 php(做为现在的主流开发语言)5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。

例一:构造函数和析构函数

<?php(做为现在的主流开发语言)
class foo {
var $x;
function __construct($x) {
$this->x = $x;
}
function display() {
print($this->x);
}
function __destruct() {
print("bye bye");
}
}
$o1 = new foo(4);
$o1->display();
?>
在上面的例子中,当你终止调用 foo 类的时候,其析构函数将会被调用,上例中会输出 “bye bye”。

对象的引用

众所周知,在php(做为现在的主流开发语言)4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号 “&” 来声明是要做一个引用,而不是一个 Copy。在 php(做为现在的主流开发语言)5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。

例二:对象的引用

<?php(做为现在的主流开发语言)
class foo {
var $x;
function setX($x) {
$this->x = $x;
}
function getX() {
return $this->x;
}
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1;
$o1->setX(5);
if($o1->getX() == $o2->getX()) print("Oh my god!");
?>

对象的克隆

如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?php(做为现在的主流开发语言)5 提供了一个新的功能,就是对象的克隆,语法为 __clone。

例三:对象的克隆
<?php(做为现在的主流开发语言)
class foo {
var $x;
function setX($x) {
$this->x = $x;
}
function getX() {
return $this->x;
}
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1->__clone();
$o1->setX(5); if($o1->getX() != $o2->getX()) print("Copies are independant");
?>
对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)

对象中的私有、公共及保护模式

php(做为现在的主流开发语言)4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。php(做为现在的主流开发语言)5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。

公共模式(Public):允许在对象外部进行操作控制。
私有模式(Private):只允许本对象内的方法对其进行操作控制。
受保护模式(Protected):允许本对象及其父对象对其进行操作控制。

例四: 对象中的私有、公共及受保护模式

<?php(做为现在的主流开发语言)
class foo {
private $x;
public function public_foo() {
print("I'm public");
}
protected function protected_foo() {
$this->private_foo(); //Ok because we are in the same class we can call private methods
print("I'm protected");
}
private function private_foo() {
$this->x = 3;
print("I'm private");
}
}
class foo2 extends foo {
public function display() {
$this->protected_foo();
$this->public_foo();
// $this->private_foo(); // Invalid! the function is private in the base class
}
} $x = new foo();
$x->public_foo();
//$x->protected_foo(); //Invalid cannot call protected methods outside the class and derived classes
//$x->private_foo(); //Invalid private methods can only be used inside the class $x2 = new foo2();
$x2->display();
?>
提示:对象中的变量总是以私有形式存在的,直接操作一个对象中的变量不是一个好的面向对象编程的习惯,更好的办法是把你想要的变量交给一个对象的方法去处理。

时间: 2024-12-31 12:29:07

php4和php5区别是什么?的相关文章

Windws下基于Apache的PHP4和PHP5共存

在学习PHP过程中可能要同时用到PHP4和PHP5,网上也有不少关于二者共存的安装方法,大多是一个安装在IIS下,一个安装在Apache下.下面介绍一下本人的安装方法,自认为比较优化,而且非常方便升级. 为了方便介绍,先介绍一下本人的安装环境:Windows XP Pro SP2,Apache 2.0.55和PHP4.4.1.PHP5.1.1,都安装在D:\(即D区上有以下文件夹d:\apache2.d:\php4.d:\php5),网卡配置两个IP地址192.168.0.2和192.168.0

PHP4和PHP5共存于一系统_php技巧

PHP4和PHP5共存于一系统 /google 的广告条--> 在其它地方看到的一篇文章,老了一点,这两天也正想找个时间来用IIS+APACHE使用不同端口来做两个PHP共存....到时再发出来'罢..看原文吧 -------------------------------------------------------------好处不多说了,:D 坏处嘛...是CGI方式的(引用官方原文:we consider installing PHP like this suicidal.--esay

php4和php5的配置异同比较

php5|比较 配置php4或者php5的过程中,php4,5的配置的步骤大致一样的,但是配置内容有一些差别.在LINUX等环境下编译,一般来说,只要编译的选项正确,配置也就正确了:在windows配置则需要注意以下不同点:1. php4ts.dll 和 php5ts.dll 这个文件要拷贝到apache的bin目录下或者系统目录下2. httpd.conf 文件加载的模块 示例如下: # For PHP4 + apache1.x.xx LoadModule php4_module d:/www

基础知识:php4和php5区别

PHP5 中的对象已经进行了较系统.较全面的调整,现在的样子可能看起来会有些类似于 Java.本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明.就让本节成为你的 PHP5 之旅的一个新起点吧.:) * 构造函数和析构函数 * 对象的引用 * 对象的克隆 * 对象中的私有.公共及受保护模式 * 接口 (Interfaces) * 抽象类 * __call * __set 和 __get * 静态成员 构造函数和析构函数 在 PHP4 中,当函数与对象同名时,这个函数将成为该对

php4与php5的区别小结(配置异同)_php技巧

php4 没有 静态成员 php网页后台出现这样的错误,查过SubPages1.php并没有找到相应的错误.网站在自己本地测试完全正常,传到空间以后就出现这样的错误.连验证码都看不到了,类似的错误还有Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /www/users/myhuashun.com.ufhost/admin/yanzhe

简述PHP4和PHP5版本下解析XML文档的操作方法

在PHP网站开发与建设过程中,时常会碰到需要对XML文档进行解析,PHP4版本自带了XML解析器(sax),PHP5版本增加了SimpleXML(基于dom)的XML扩展,对XML的解析更是非常方便,今天和大家分享下在不同环境下对XML文档进行解析的方法.XML文档 1234567891011121314151617181920 <?xml version="1.0" encoding="gbk"?> <LeapsoulXML>      

php4和php5区别

PHP5 中的对象已经进行了较系统.较全面的调整,现在的样子可能看起来会有些类似于 Java.本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明.就让本节成为你的 PHP5 之旅的一个新起点吧.:) * 构造函数和析构函数 * 对象的引用 * 对象的克隆 * 对象中的私有.公共及受保护模式 * 接口 (Interfaces) * 抽象类 * __call * __set 和 __get * 静态成员 构造函数和析构函数 在 PHP4 中,当函数与对象同名时,这个函数将成为该对

PHP4和PHP5性能大对比

PHP 4到今年年底PHP Group将不再对其进行支持了,所以为了让大家更有信心的转移到PHP 5平台上,我特别做了这个测试,看看我们PHP 4.x 是否真的性能比我们的PHP 5.x要好捏,测试结果很明显,那就是PHP 5.x 比php 4.x不论是面向对象还是面向过程,都要比PHP 4.x 要快,所以大家完全有必要转移到PHP 5.x 平台上,去体验PHP 5.x 平台的各种功能和性能. 因为PHP 5 包括新的对象模型,更多新特点,更快的处理速度,特别是处理面向对象代码的速度,虽然在ph

不错的PHP学习之php4与php5之间会穿梭一点点感悟_php技巧

昨天把php空间开通了,服务器安装的是php4版本,接近二十天来开始用php写东西,自己搭建的平台都是php5,当然在写的时候还是十分小心,因为几乎每一段代码的要点都是先查了参考然后写出来的,那就么可以看到参考里那些是php4支持那些是php5中才新增的.结果上传上去之后,才发现不得不修改!! 1.修改字符串中的类方法调用,字符串我在php5中写成如下: $htmlstr=<<<HTML <a href="user.php?u={$dataobj->getuseri