php面向?qū)ο笕ヂ?(四)構(gòu)造方法與析構(gòu)方法
更新時(shí)間:2009年09月30日 22:02:11 作者:
大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函數(shù),也就是使用new 這個(gè)關(guān)鍵字來(lái)實(shí)例化對(duì)象的時(shí)候自動(dòng)調(diào)用構(gòu)造方法。
8.構(gòu)造方法與析構(gòu)方法
大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函
數(shù),也就是使用new 這個(gè)關(guān)鍵字來(lái)實(shí)例化對(duì)象的時(shí)候自動(dòng)調(diào)用構(gòu)造方法。
構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱必須是__construct( )。這是PHP5 中
的變化,以前的版本中,構(gòu)造函數(shù)的名稱必須與類名相同,這種在PHP5 中仍然可以用,但
現(xiàn)在以經(jīng)很少有人用了,這樣做的好處是可以使構(gòu)造函數(shù)獨(dú)立于類名,當(dāng)類名發(fā)生改變時(shí)不
需要改相應(yīng)的構(gòu)造函數(shù)名稱了。為了向下兼容,如果一個(gè)類中沒有名為__construct( )的方法,
PHP 將搜索一個(gè)php4 中的寫法,與類名相同名的構(gòu)造方法。
格式:function __construct ( [參數(shù)] ) { ... ... }
在一個(gè)類中只能聲明一個(gè)構(gòu)造方法,而是只有在每次創(chuàng)建對(duì)象的時(shí)候都會(huì)去調(diào)用一次構(gòu)
造方法,不能主動(dòng)的調(diào)用這個(gè)方法,所以通常用它執(zhí)行一些有用的初始化任務(wù)。比如對(duì)成屬
性在創(chuàng)建對(duì)象的時(shí)候賦初值。
代碼片段
<?
//創(chuàng)建一個(gè)人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個(gè)人的說(shuō)話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
}
//通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法
$p1->say();
//下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法
$p2->say();
//下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法
$p3->say();
?>
輸出結(jié)果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
如圖:
析構(gòu)函數(shù):
與構(gòu)造函數(shù)相對(duì)的就是析構(gòu)函數(shù)。析構(gòu)函數(shù)是PHP5 新添加的內(nèi)容,在PHP4 中沒有析
構(gòu)函數(shù)。析構(gòu)函數(shù)允許在銷毀一個(gè)類之前執(zhí)行的一些操作或完成一些功能,比如說(shuō)關(guān)閉文件,
釋放結(jié)果集等,析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行,
也就是對(duì)象在內(nèi)存中被銷毀前調(diào)用析構(gòu)函數(shù)。與構(gòu)造函數(shù)的名稱類似,一個(gè)類的析構(gòu)函數(shù)名
稱必須是__destruct( )。析構(gòu)函數(shù)不能帶有任何參數(shù)。
格式:function __destruct ( ) { ... ... }
代碼片段
<?
//創(chuàng)建一個(gè)人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個(gè)人的說(shuō)話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
//這是一個(gè)析構(gòu)函數(shù),在對(duì)象銷毀前調(diào)用
function __destruct(){
echo “再見”.$this->name.”<br>”;
}
//通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法
$p1->say();
//下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法
$p2->say();
//下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法
$p3->say();
?>
輸出結(jié)果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
再見張三
再見李四
再見王五
大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函
數(shù),也就是使用new 這個(gè)關(guān)鍵字來(lái)實(shí)例化對(duì)象的時(shí)候自動(dòng)調(diào)用構(gòu)造方法。
構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱必須是__construct( )。這是PHP5 中
的變化,以前的版本中,構(gòu)造函數(shù)的名稱必須與類名相同,這種在PHP5 中仍然可以用,但
現(xiàn)在以經(jīng)很少有人用了,這樣做的好處是可以使構(gòu)造函數(shù)獨(dú)立于類名,當(dāng)類名發(fā)生改變時(shí)不
需要改相應(yīng)的構(gòu)造函數(shù)名稱了。為了向下兼容,如果一個(gè)類中沒有名為__construct( )的方法,
PHP 將搜索一個(gè)php4 中的寫法,與類名相同名的構(gòu)造方法。
格式:function __construct ( [參數(shù)] ) { ... ... }
在一個(gè)類中只能聲明一個(gè)構(gòu)造方法,而是只有在每次創(chuàng)建對(duì)象的時(shí)候都會(huì)去調(diào)用一次構(gòu)
造方法,不能主動(dòng)的調(diào)用這個(gè)方法,所以通常用它執(zhí)行一些有用的初始化任務(wù)。比如對(duì)成屬
性在創(chuàng)建對(duì)象的時(shí)候賦初值。
代碼片段
復(fù)制代碼 代碼如下:
<?
//創(chuàng)建一個(gè)人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個(gè)人的說(shuō)話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
}
//通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法
$p1->say();
//下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法
$p2->say();
//下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法
$p3->say();
?>
輸出結(jié)果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
如圖:

析構(gòu)函數(shù):
與構(gòu)造函數(shù)相對(duì)的就是析構(gòu)函數(shù)。析構(gòu)函數(shù)是PHP5 新添加的內(nèi)容,在PHP4 中沒有析
構(gòu)函數(shù)。析構(gòu)函數(shù)允許在銷毀一個(gè)類之前執(zhí)行的一些操作或完成一些功能,比如說(shuō)關(guān)閉文件,
釋放結(jié)果集等,析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(zhí)行,
也就是對(duì)象在內(nèi)存中被銷毀前調(diào)用析構(gòu)函數(shù)。與構(gòu)造函數(shù)的名稱類似,一個(gè)類的析構(gòu)函數(shù)名
稱必須是__destruct( )。析構(gòu)函數(shù)不能帶有任何參數(shù)。
格式:function __destruct ( ) { ... ... }
代碼片段
復(fù)制代碼 代碼如下:
<?
//創(chuàng)建一個(gè)人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個(gè)構(gòu)造方法參數(shù)為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過(guò)構(gòu)造方法傳進(jìn)來(lái)的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個(gè)人的說(shuō)話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
//這是一個(gè)析構(gòu)函數(shù),在對(duì)象銷毀前調(diào)用
function __destruct(){
echo “再見”.$this->name.”<br>”;
}
//通過(guò)構(gòu)造方法創(chuàng)建3個(gè)對(duì)象$p1、p2、$p3,分別傳入三個(gè)不同的實(shí)參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問(wèn)$p1對(duì)象中的說(shuō)話方法
$p1->say();
//下面訪問(wèn)$p2對(duì)象中的說(shuō)話方法
$p2->say();
//下面訪問(wèn)$p3對(duì)象中的說(shuō)話方法
$p3->say();
?>
輸出結(jié)果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
再見張三
再見李四
再見王五
您可能感興趣的文章:
- PHP類的聲明與實(shí)例化及構(gòu)造方法與析構(gòu)方法詳解
- PHP的構(gòu)造方法,析構(gòu)方法和this關(guān)鍵字詳細(xì)介紹
- php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)
- PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析
- php基礎(chǔ)知識(shí):類與對(duì)象(3) 構(gòu)造函數(shù)和析構(gòu)函數(shù)
- php構(gòu)造函數(shù)與析構(gòu)函數(shù)
- php學(xué)習(xí)筆記 面向?qū)ο蟮臉?gòu)造與析構(gòu)方法
- PHP構(gòu)造函數(shù)與析構(gòu)函數(shù)用法示例
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之構(gòu)造方法和析構(gòu)方法詳解
相關(guān)文章
PHP simplexml_load_string()函數(shù)實(shí)例講解
今天小編就為大家分享一篇關(guān)于PHP simplexml_load_string()函數(shù)實(shí)例講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02PHP和Mysqlweb應(yīng)用開發(fā)核心技術(shù) 第1部分 Php基礎(chǔ)-1 開始了解php
PHP和Mysqlweb應(yīng)用開發(fā)核心技術(shù)-第1部分 Php基礎(chǔ)-1開始了解php,想學(xué)習(xí)php的朋友可以看下,比較基礎(chǔ)的知識(shí)。2011-07-07不用數(shù)據(jù)庫(kù)的多用戶文件自由上傳投票系統(tǒng)(1)
不用數(shù)據(jù)庫(kù)的多用戶文件自由上傳投票系統(tǒng)(1)...2006-10-10php替換超長(zhǎng)文本中的特殊字符的函數(shù)代碼
php替換超長(zhǎng)文本中的特殊字符的函數(shù),主要就是通過(guò)str_replace實(shí)現(xiàn)字符的簡(jiǎn)單體會(huì)2012-05-05