在爲認證工作時,我遇到了一個MCQ問題。它如下。PHP 4:無法理解OOP行爲
問:請考慮以下腳本。它會輸出什麼?
<?php
$global_obj = null;
class my_class
{
var $value;
function my_class()
{
global $global_obj;
$global_obj = &$this;
}
}
$a = new my_class;
$a->my_value = 5;
$global_obj->my_value = 10;
echo $a->my_value;
?>
選擇正確的 選項:
- A. 5
- B. 10
- C.沒什麼
- D.構造函數將拋出一個錯誤
- E. 510
我選擇了B:10,因爲在my_class
構造函數$global_obj
正在通過引用$this
進行初始化。通過當我鉤稽我的答案是錯的
當他們提到的描述是
這是一個真正棘手的。在第一次檢查時,似乎 my_class
的構造函數在$global_obj variable
中存儲對自身的引用。因此,如果我們稍後將$global_obj->my_value
的值更改爲10,則會有一個 期望值,$ a中對應的 值也會發生變化。不幸的是,新運算符不返回引用 ,而是返回新創建的對象的副本。因此,該腳本將輸出5和正確 答案是A.
雅我同意的描述是不夠好,但還是我不能夠消化它,因爲我們已經清楚地分配$global_obj
$的參考那麼這怎麼可能是這樣呢?任何人都可以詳細解釋一下嗎?
您正在爲* PHP 4 *認證練習......? :) – deceze
爲什麼你想要獲得PHP 4認證?當我們現在使用PHP 5.4時,似乎浪費時間和金錢。 –
我想這在印度仍然有用,他們在現有項目中獲得了很多外包維護工作(我曾在班加羅爾爲一家IT公司工作過兩年)。 –