オブジェクトのメソッドは、同じクラスの別のオブジェクトの保護されたプロパティにアクセスできなければなりませんか?同じクラスの別のオブジェクトの保護されたプロパティにアクセスするメソッド
私は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のバグですか、それが意図された動作です(と私はこの概念を再学習する必要があります... :))(事実への参照がありますか)?それは他のプログラミング言語でどのように行われますか?
ありがとうございます!
NB。 Rubyの['private'](http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html#s4)は、説明したように動作します。プライベートメソッドを別のインスタンスで呼び出すことはできません。 – outis