欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析

 更新時間:2014年10月10日 10:42:06   投稿:junjie  
這篇文章主要介紹了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析,本文用代碼實例講解了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù),需要的朋友可以參考下

構(gòu)造函數(shù)

void __construct ([ mixed $args [, $... ]] )

PHP 5 允行開發(fā)者在一個類中定義一個方法作為構(gòu)造函數(shù)。具有構(gòu)造函數(shù)的類會在每次創(chuàng)建新對象時先調(diào)用此方法,所以非常適合在使用對象之前做一些初始化工作。

Note: 如果子類中定義了構(gòu)造函數(shù)則不會隱式調(diào)用其父類的構(gòu)造函數(shù)。要執(zhí)行父類的構(gòu)造函數(shù),需要在子類的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。如果子類沒有定義構(gòu)造函數(shù)則會如同一個普通的類方法一樣從父類繼承(假如沒有被定義為 private 的話)。

Example#1使用新標(biāo)準(zhǔn)的構(gòu)造函數(shù)

復(fù)制代碼 代碼如下:

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}
 
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}
 
class OtherSubClass extends BaseClass {
    // inherits BaseClass's constructor
}
 
// In BaseClass constructor
$obj = new BaseClass();
 
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
 
// In BaseClass constructor
$obj = new OtherSubClass();
?>

output:
In BaseClass constructor
In BaseClass constructor
In SubClass constructor
In BaseClass constructor

為了實現(xiàn)向后兼容性,如果 PHP 5 在類中找不到 __construct() 函數(shù)并且也沒有從父類繼承一個的話,它就會嘗試尋找舊式的構(gòu)造函數(shù),也就是和類同名的函數(shù)。因此唯一會產(chǎn)生兼容性問題的情況是:類中已有一個名為 __construct() 的方法卻被用于其它用途時。

與其它方法不同,當(dāng) __construct() 被與父類 __construct() 具有不同參數(shù)的方法覆蓋時,PHP 不會產(chǎn)生一個 E_STRICT 錯誤信息。

自 PHP 5.3.3 起,在命名空間中,與類名同名的方法不再作為構(gòu)造函數(shù)。這一改變不影響不在命名空間中的類。

Example#2 Constructors in namespaced classes

復(fù)制代碼 代碼如下:

<?php
namespace Foo;
class Bar {
    public function Bar() {
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method as of PHP 5.3.3
    }
}
?>

析構(gòu)函數(shù)

void __destruct(void)

PHP 5 引入了析構(gòu)函數(shù)的概念,這類似于其它面向?qū)ο蟮恼Z言,如 C++。析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行。

Example#3析構(gòu)函數(shù)示例

復(fù)制代碼 代碼如下:

<?php
class MyDestructableClass {
   function __construct() {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>

和構(gòu)造函數(shù)一樣,父類的析構(gòu)函數(shù)不會被引擎暗中調(diào)用。要執(zhí)行父類的析構(gòu)函數(shù),必須在子類的析構(gòu)函數(shù)體中顯式調(diào)用 parent::__destruct()。此外也和構(gòu)造函數(shù)一樣,子類如果自己沒有定義析構(gòu)函數(shù)則會繼承父類的。

析構(gòu)函數(shù)即使在使用 exit() 終止腳本運行時也會被調(diào)用。在析構(gòu)函數(shù)中調(diào)用 exit() 將會中止其余關(guān)閉操作的運行。

Note:
析構(gòu)函數(shù)在腳本關(guān)閉時調(diào)用,此時所有的 HTTP 頭信息已經(jīng)發(fā)出。腳本關(guān)閉時的工作目錄有可能和在 SAPI(如 apache)中時不同。
Note:
試圖在析構(gòu)函數(shù)(在腳本終止時被調(diào)用)中拋出一個異常會導(dǎo)致致命錯誤。

相關(guān)文章

  • php-redis中的sort排序函數(shù)總結(jié)

    php-redis中的sort排序函數(shù)總結(jié)

    這篇文章主要介紹了php-redis中的sort排序函數(shù)總結(jié),本文講解了了按字母排序、排序取部分?jǐn)?shù)據(jù)、使用外部key進行排序等排序方法,同時給出代碼實例,需要的朋友可以參考下
    2015-07-07
  • php連接微軟MSSQL(sql server)完全攻略

    php連接微軟MSSQL(sql server)完全攻略

    在研究ezSQL的時候就看到了mssql_connect()等一些php提供的連接MSSQL的函數(shù),本以為php這個開源的風(fēng)靡世界的編程語言對連接微軟的數(shù)據(jù)應(yīng)該是不在話下的,但是到真正執(zhí)行的時候,才發(fā)現(xiàn)困難多多
    2016-11-11
  • 在WINDOWS中設(shè)置計劃任務(wù)執(zhí)行PHP文件的方法

    在WINDOWS中設(shè)置計劃任務(wù)執(zhí)行PHP文件的方法

    在網(wǎng)上找了些WINDOWS執(zhí)行PHP的計劃任務(wù)的方法,有一個寫得很全,可惜在我這竟然沒通過。最后不得不綜合各門派的方法,才能在我這運行成功
    2011-12-12
  • PHP的介紹以及優(yōu)勢詳細(xì)分析

    PHP的介紹以及優(yōu)勢詳細(xì)分析

    在本篇文章里小編給各位分享的是關(guān)于PHP的介紹以及優(yōu)勢知識點分析,有需要的朋友們可以參考下。
    2019-09-09
  • PHP中session使用方法詳解

    PHP中session使用方法詳解

    在PHP開發(fā)中對比起Cookie,session 是存儲在服務(wù)器端的會話,相對安全,并且不像 Cookie 那樣有存儲長度限制,本文簡單介紹 session 的使用
    2007-03-03
  • 淺析PHP中json_encode與json_decode的區(qū)別

    淺析PHP中json_encode與json_decode的區(qū)別

    這篇文章主要介紹了淺析PHP中json_encode與json_decode的區(qū)別,PHP提供json_encode()和json_decode()函數(shù),前者用于編碼,后者用于解碼。下面來分析下這兩個函數(shù),感興趣的可以了解一下
    2020-07-07
  • PHP global全局變量經(jīng)典應(yīng)用與注意事項分析【附$GLOBALS用法對比】

    PHP global全局變量經(jīng)典應(yīng)用與注意事項分析【附$GLOBALS用法對比】

    這篇文章主要介紹了PHP global全局變量經(jīng)典應(yīng)用與注意事項,結(jié)合實例形式分析了php中g(shù)lobal全局變量的功能、使用方法及相關(guān)操作注意事項,并附帶了$GLOBALS用法作為對比,需要的朋友可以參考下
    2019-07-07
  • PHP中有關(guān)長整數(shù)的一些操作教程

    PHP中有關(guān)長整數(shù)的一些操作教程

    這篇文章主要給大家介紹了關(guān)于PHP中有關(guān)長整數(shù)的一些操作教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • php實現(xiàn)CSV文件導(dǎo)入和導(dǎo)出

    php實現(xiàn)CSV文件導(dǎo)入和導(dǎo)出

    這篇文章主要介紹了php實現(xiàn)CSV文件導(dǎo)入和導(dǎo)出的方法,具有一定的參考價值,需要的朋友可以參考下
    2015-10-10
  • 自寫的利用PDO對mysql數(shù)據(jù)庫增刪改查操作類

    自寫的利用PDO對mysql數(shù)據(jù)庫增刪改查操作類

    這篇文章主要給大家介紹了關(guān)于自寫的利用PDO對mysql數(shù)據(jù)庫的增刪改查操作類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02

最新評論