為什么析構(gòu)函數(shù)被執(zhí)行了2遍?
calss car(){
public function $txt = "1"
function __construct($name){ ?
echo "構(gòu)造被調(diào)用";
$this->$name = $name
}?
}
$a = new car(2);
$a->name;
這時(shí)候?應(yīng)該是輸出:
“構(gòu)造被調(diào)用”
?1
之后再加上下面的析構(gòu)函數(shù)
function __destruct(){ ??
echo "析構(gòu)被調(diào)用".$txt
$b = new car(3);
$b->name;
這時(shí)候應(yīng)該會輸出
“構(gòu)造被調(diào)用”
?3?
“析構(gòu)被調(diào)用 2”?
“析構(gòu)被調(diào)用 3”
怎么說呢,感覺老師講的那個(gè)Nbaplaror是這個(gè)順序,我也不知道該怎么說了,我不明白的地方是為什么最后為什么輸出了兩次 "析構(gòu)被調(diào)用" 并且把實(shí)例化$a時(shí)傳的值也調(diào)出來了??
為什么在實(shí)例化$b的時(shí)候 $a時(shí)傳的值還在
這和靜態(tài)方法有關(guān)嗎?其原理是什么
2016-05-09
析構(gòu)函數(shù),在實(shí)例化的時(shí)侯會被自動調(diào)用,你實(shí)例化了兩個(gè)對象,會調(diào)用兩次析構(gòu)函數(shù),這理解是對的。
對于代碼的是幕客網(wǎng)提供的編輯器,在你輸入內(nèi)容的左上角有代碼語言可以選擇,選擇了對應(yīng)的語言就會根據(jù)語言提供高亮顯示效果。
2016-05-09
<code>?
class?car{
????public?$name;
????function?__construct(?$name?)
</code>
2016-05-09
<pre>
class?car{
????public?$name;
????function?__construct(?$name?)
</pre>
2016-05-09
你的代碼完全無法執(zhí)行,定義個(gè)類不是類的方法,
類的定義不應(yīng)該是:
你定義的屬性不是成員屬性不是成員屬性,成員方法不是成員方法,并且PHP基本的語法,結(jié)束的分號“ ; ”也多處沒有寫上 :
public function $txt = "1"
看你的寫法應(yīng)該是想定義屬性的,那么就應(yīng)該是這樣寫:
你的構(gòu)造函數(shù)$name這個(gè)屬性在定義成為屬性的時(shí)侯并沒有定義過,這樣的話在勢例子化對象的時(shí)間,構(gòu)造函數(shù)根本就不動$name是個(gè)什么對象,報(bào)?Notice: Undefined property: car::$name 這個(gè)屬性沒有定義!
下面是修改的代碼:
看你的代碼,我想你的意圖應(yīng)該是想默認(rèn)初始化對象是$name
="1",然后實(shí)例化對象的時(shí)侯根據(jù)你傳的值修改默認(rèn)值成為2,然后再實(shí)例化1個(gè)對象$name
值為3吧。
拼接了個(gè)<br?/>是在為了在瀏覽器顯示換行,方便看清楚效果。
建議你想將php的基本的語法先掌握再深入學(xué)習(xí),效果應(yīng)該會好些。
2016-05-09
你這代碼亂的我完全看不明白,但是你的問題我可以大概的回答你
為什么輸出了兩次 "析構(gòu)被調(diào)用"??? 是因?yàn)槲鰳?gòu)函數(shù)在變量摧毀時(shí)就會運(yùn)行,每次代碼運(yùn)行結(jié)束就會調(diào)用,所以你這里是兩次
靜態(tài)方法有關(guān)嗎?其原理是什么?? 靜態(tài)方法關(guān)鍵詞是static,在你的代碼里我并沒有看到靜態(tài)方法的運(yùn)用