オブジェクトのメソッドは、同じクラスの別のオブジェクトの保護されたプロパティにアクセスできる必要がありますか?
私はPHPでコーディングしていますが、同じオブジェクトでなくても、オブジェクトの保護されたプロパティに同じクラスのメソッドでアクセスできることを発見しました。
この例では、最初は出力に「3」が表示されます。これは、関数readOtherUserが値に正常にアクセスしたためです。その後、メインプログラムが同じ値にアクセスできなかったため、PHPの致命的なエラーが発生します。 。
<?php
class user
{
protected $property = 3;
public function readOtherUser ()
{
$otherUser = new user ();
print $otherUser->property;
}
}
$user = new user ();
$user->readOtherUser ();
print $user->property;
?>
これはPHPのバグですか、それとも意図された動作ですか(そして、この概念を再学習する必要があります…:))(そして事実への参照があります)?他のプログラミング言語ではどのように行われますか?
ありがとう!