日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php构造和析构方法,php5构造函数与析构函数实例

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php构造和析构方法,php5构造函数与析构函数实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自php5起,有了構造函數與析構函數。

這使得php更富有面向對象的魅力了。

在php4時,構造函數用的是與類同名的函數來進行構造這個動作。

例如:

復制代碼 代碼示例:

/*

* myclass.php

*/

class myclass {

function myclass {

print "this is myclass\n";

}

}

//創建一個新的實例

$obj = new myclass();

?>

將以上代碼保存為myclass.php,運行后,會打印出 this is myclass字樣。這是php4的構造函數(當然,為了兼容,php5也可以這樣寫)。

在php5里,有了專門的構造和析構函數。__construct()和__destruct() 。再重新改寫這個myclass.php。

復制代碼 代碼示例:

/*

* myclass.php

*/

class myclass {

function __construct() {

print "constructor\n";

}

function __destruct() {

print "destroying\n";

}

}

//創建一個新的實例

$obj = new myclass();

?>

保存以后發現打印出了"constructor destroying"。說明構造和析構的確發生了。

目前為止,沒有任何問題。在php5的手冊里,對于使用__construct還有段說明。如下:

為了實現向后兼容性(指php 4),如果 php 5 在類中找不到 __construct() 函數,它就會嘗試尋找舊式的構造函數,也就是和類同名的函數。因此唯一會產生兼容性問題的情況是:類中已有一個名為 __construct() 的方法,但它卻又不是構造函數。

再來看一種情況,當一個派生類繼承了基類并且這兩個類都存在構造和析構函數的時候會出現什么眼的狀況呢?

php 5對此的處理手段是: 隱藏基類的構造和析構!

代碼:

復制代碼 代碼示例:

/*

* myclass.php

*/

class baseclass {

function __construct() {

print "baseclass:\n constructor ";

}

function __destruct() {

print "baseclass:\n destroying ";

}

}

class subclass extends baseclass {

function __construct() {

print "subclass:\n constructor ";

}

function __destruct() {

print "subclass:\n destroying ";

}

}

$obj = new subclass();

?>

保存運行后,結果打印:subclass: constructor subclass: destroying

可以看到,基類的構造與析構并沒有發生。

這不得不讓人費解,為什么php5會采取這種的機制呢?

c++的構造與析構的過程是:基類構造->派生類構造->派生類析構->基類析構。這才是成熟的機制。為什么php 5 會標新立異?

很顯然,這種做法并不十分的明智。

翻看php手冊找到一種說法:

php 4 不會從派生類的構造函數中自動調用基類的構造函數。恰當地逐次調用上一級的構造函數是用戶的責任。 (php 4)

如果子類中定義了構造函數則不會暗中調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()。 (php 5)

可惜這兩種說法并不足以令人信服。既然已經存在了構造,為何還得用手工調用?

總結

以上是生活随笔為你收集整理的php构造和析构方法,php5构造函数与析构函数实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。