电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> PHP>>PHP4和PHP5对比分析:构造函数和析构函数:

PHP4和PHP5对比分析:构造函数和析构函数

来源:网络 | 2008-10-16 | (有3400人读过)

在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。  
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。  

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

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”。  


对象的引用  

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

例二:对象的引用  


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!");  
?>  

对象的克隆  

如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。  

例三:对象的克隆  
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热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号