Czy metoda obiektu może mieć dostęp do chronionej własności innego obiektu tej samej klasy?Metoda uzyskiwania dostępu do chronionej właściwości innego obiektu tej samej klasy
Kodowanie w PHP, i właśnie odkryłem, że chroniona właściwość obiektu może być dostępna przez metodę tej samej klasy, nawet jeśli nie jest tego samego obiektu.
W tym przykładzie na początku otrzymasz "3" na wyjściu - ponieważ funkcja readOtherUser pomyślnie osiągnie wartość -, a następnie wystąpi błąd krytyczny PHP - ponieważ program główny zakończy się niepowodzeniem dostęp do tej samej wartości.
<?php
class user
{
protected $property = 3;
public function readOtherUser()
{
$otherUser = new user();
print $otherUser->property;
}
}
$user = new user();
$user->readOtherUser();
print $user->property;
?>
Jest to błąd PHP czy jest to zamierzone zachowanie (i będę musiał uczyć się na nowo tę koncepcję ... :)) (i są tam odniesienia do rzeczywistości)? Jak to się robi w innych językach programowania?
Dzięki!
NB. Ruby's ['private'] (http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html#s4) zachowuje się jak opisano - prywatnej metody nie można wywołać w innej instancji. – outis