php物件導向全攻略 (四)構造方法與析構方法

來源:互聯網
上載者:User

8.構造方法與析構方法
大多數類都有一種稱為建構函式的特殊方法。當建立一個對象時,它將自動調用構造函
數,也就是使用new 這個關鍵字來執行個體化對象的時候自動調用構造方法。
建構函式的聲明與其它操作的聲明一樣,只是其名稱必須是__construct( )。這是PHP5 中
的變化,以前的版本中,建構函式的名稱必須與類名相同,這種在PHP5 中仍然可以用,但
現在以經很少有人用了,這樣做的好處是可以使建構函式獨立於類名,當類名發生改變時不
需要改相應的建構函式名稱了。為了向下相容,如果一個類中沒有名為__construct( )的方法,
PHP 將搜尋一個php4 中的寫法,與類名相同名的構造方法。
格式:function __construct ( [參數] ) { ... ... }
在一個類中只能聲明一個構造方法,而是只有在每次建立對象的時候都會去調用一次構
造方法,不能主動的調用這個方法,所以通常用它執行一些有用的初始化任務。比如對成屬
性在建立對象的時候賦初值。
程式碼片段 複製代碼 代碼如下:<?
//建立一個人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個構造方法參數為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過構造方法傳進來的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過構造方法傳進來的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過構造方法傳進來的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個人的說話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
}
//通過構造方法建立3個對象$p1、p2、$p3,分別傳入三個不同的實參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問$p1對象中的說話方法
$p1->say();
//下面訪問$p2對象中的說話方法
$p2->say();
//下面訪問$p3對象中的說話方法
$p3->say();
?>

輸出結果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40


解構函式:
與建構函式相對的就是解構函式。解構函式是PHP5 新添加的內容,在PHP4 中沒有析
構函數。解構函式允許在銷毀一個類之前執行的一些操作或完成一些功能,比如說關閉檔案,
釋放結果集等,解構函式會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行,
也就是對象在記憶體中被銷毀前調用解構函式。與建構函式的名稱類似,一個類的解構函式名
稱必須是__destruct( )。解構函式不能帶有任何參數。
格式:function __destruct ( ) { ... ... }
程式碼片段 複製代碼 代碼如下:<?
//建立一個人類
class Person{
//下面是人的成員屬性
var $name; //人的名字
var $sex; //人的性別
var $age; //人的年齡
//定義一個構造方法參數為姓名$name、性別$sex和年齡$age
function __construct($name, $sex, $age){
//通過構造方法傳進來的$name給成員屬性$this->name賦初使值
$this->name=$name;
//通過構造方法傳進來的$sex給成員屬性$this->sex賦初使值
$this->sex=$sex;
//通過構造方法傳進來的$age給成員屬性$this->age賦初使值
$this->age=$age;
}
//這個人的說話方法
function say(){
echo "我的名字叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";
}
//這是一個解構函式,在對象銷毀前調用
function __destruct(){
echo “再見”.$this->name.”<br>”;
}
//通過構造方法建立3個對象$p1、p2、$p3,分別傳入三個不同的實參為姓名、性別和年齡
$p1=new Person(“張三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面訪問$p1對象中的說話方法
$p1->say();
//下面訪問$p2對象中的說話方法
$p2->say();
//下面訪問$p3對象中的說話方法
$p3->say();
?>

輸出結果為:
我的名字叫:張三性別:男我的年齡是:20
我的名字叫:李四性別:女我的年齡是:30
我的名字叫:王五性別:男我的年齡是:40
再見張三
再見李四
再見王五

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.