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

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

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

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

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

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

Note: 如果子類中定義了構(gòu)造函數(shù)則不會(huì)隱式調(diào)用其父類的構(gòu)造函數(shù)。要執(zhí)行父類的構(gòu)造函數(shù),需要在子類的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。如果子類沒(méi)有定義構(gòu)造函數(shù)則會(huì)如同一個(gè)普通的類方法一樣從父類繼承(假如沒(méi)有被定義為 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

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

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

自 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(yǔ)言,如 C++。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷毀時(shí)執(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ù)不會(huì)被引擎暗中調(diào)用。要執(zhí)行父類的析構(gòu)函數(shù),必須在子類的析構(gòu)函數(shù)體中顯式調(diào)用 parent::__destruct()。此外也和構(gòu)造函數(shù)一樣,子類如果自己沒(méi)有定義析構(gòu)函數(shù)則會(huì)繼承父類的。

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    PHP中session使用方法詳解

    在PHP開(kāi)發(fā)中對(duì)比起Cookie,session 是存儲(chǔ)在服務(wù)器端的會(huì)話,相對(duì)安全,并且不像 Cookie 那樣有存儲(chǔ)長(zhǎng)度限制,本文簡(jiǎn)單介紹 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ù),前者用于編碼,后者用于解碼。下面來(lái)分析下這兩個(gè)函數(shù),感興趣的可以了解一下
    2020-07-07
  • PHP global全局變量經(jīng)典應(yīng)用與注意事項(xiàng)分析【附$GLOBALS用法對(duì)比】

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

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

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

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

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

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

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

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

最新評(píng)論