看起來好像類的不同實例可以知道彼此的私有成員變量。PHP範圍和類實例交互
我提供了一些試圖展示我的問題的代碼,我會試着解釋它。
我們有一個私有成員變量$hidden
。 modifyPrivateMember
將$hidden
的值設置爲3
。 accessPrivateMember
以Object
作爲參數,訪問其私人$hidden
成員返回其值。
示例代碼:
$ php example.php
3
任何人都可以解釋爲什麼對象的私有成員是同一類的其他實例訪問:上面的代碼
<?php
// example.php
class Object {
private $hidden;
public function modifyPrivateMember() {
$this->hidden = 3;
}
public function accessPrivateMember(Object $otherObject) {
return $otherObject->hidden;
}
}
$firstObject = new Object;
$firstObject->modifyPrivateMember();
$otherObject = new Object;
echo $otherObject->accessPrivateMember($firstObject);
輸出?這種表面上違反範圍的理由是否存在?
到目前爲止的答案剛告訴我代碼的例子。我真的正在尋找一個問題的答案*爲什麼*事情是這樣的。爲什麼可見性僅限於課堂而不是對象?這提供了什麼優勢? – 2009-08-18 20:32:50
我只是現在猜測,但PHP借用java包括修飾符行爲。也許由於類型系統的原因,java必須在課堂上完成它。也許這就解釋了爲什麼ruby可以在實例級別上做到這一點。但它又是一個猜測。 – MrHus 2009-08-18 23:37:56