萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中構造函數與析構函數詳解

php中構造函數與析構函數詳解

在php中構造函數與析構函數都是使用在類中的,下面我來給大家詳細介紹關於在php類中使用構造函數與析構函數的方法,有需要了解的朋友可參考參考。

析構函數

php析構函數的作用剛好和構造函數相反,構造函數是在對象實例化時自動執行,而析構函數在對象被銷毀時自動執行。

默認情況下,php僅釋放對象屬性所占用的內存,並不銷毀對象相關的資源,而利用析構函數在使用一個對象之後執行代碼來清除內存,並將對象從內存中銷毀。析構函數__destruct()結構形式如下:

 代碼如下 復制代碼
 function __destruct(){
    /* class initialization code */
}

析構函數是由系統自動調用,不能帶參數。

實例:

 代碼如下 復制代碼

<?php
 class des{
  function __destruct(){
   echo "運行結束,執行析構函數";
  }
 }
 $p=new des(); /* 實例化類 */
 $sum=0;
 for($i=0;$i<10;$i++){
  $sum=$sum+$i;
  echo $sum ."<br>";
 }
?>

析構函數的調用

php如何調用析構函數?當php腳本不再與對象相關時將調用析構函數。如果要明確地銷毀一個對象調用析構函數,可以給指向對象的變量不分配任何值,通常將變量賦值為NULL或者用unset()函數。

實例:

 代碼如下 復制代碼

<?php
 class des{
  function __destruct(){
   echo "對象被銷毀,執行析構函數<br>";
  }
 }
 $p=new des(); /* 實例化類 */
 echo "程序開始<br>";
 unset($p); /* 銷毀變量$p */
 echo "程序結束";
?>

構造函數

我們在使用類的過程中,有時需要立即為實例化對象的多個字段父子,如果通過手工,會帶來很多不可預測的問題,而如果在對象創建過程中自動執行,則會帶來很多方便。

php構造函數作用就是當類被實例化時,會自動執行的函數,又稱為構造函數。

構造函數的聲明和其它函數一樣,知識構造函數的名稱是“__construct”固定的名稱,其結構形式如下:

 代碼如下 復制代碼

function __construct([argument1,argument2,argument3]){
    /* class initialization code */
}

實例:

 代碼如下 復制代碼

<?php
 class user{
  public $name;
  private $password;
  private $login;
  public function __construct($name,$password){
   $this->name=$name;
   $this->password=$password;
   $this->login=time();
  }
  function getlogin(){
   return(date('M d,Y',$this->login));
  }
 }
 $user=new user('Marry','888888');
 echo "用戶名: ". $user->name. "<br>";
 print("訪問時間". $user->getlogin());
?>

調用父類構造函數

構造函數可以被子類調用,php調用父類構造函數時必須使用parent關鍵字,否則不會自動調用。

實例:

 代碼如下 復制代碼

<?php
 class task1{
  public function __construct(){
   echo "today is Monday". "<br>";
  }
 }
 class task2 extends task1{
  function __construct(){
   parent::__construct(); /* 調用父類構造函數 */
   echo "I must work!";
  }
 }
 new task2;
?>

copyright © 萬盛學電腦網 all rights reserved