PHP/Klasy i obiekty: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m Co za mądrala pododawał z powrotem "?>" do listingów? Wytyczne czytać! |
→Kontrola dostępu (hermetyzacja): "w myśl klasa" -> "w myśl której klasa" |
||
Linia 129:
</source>
Powyższy skrypt się nie wykona. W ostatniej linijce PHP zgłosi nam błąd, jakim jest próba dostania się do prywatnego elementu klasy spoza obiektu. Jednocześnie działa odwołanie umieszczone wewnątrz metody <code>getField()</code>. Taki rodzaj metody zwie się po angielsku ''getter'', a oprócz niego mamy też ''setter'', który pozwala ustawić wartość określonemu polu. Jest to jedna z konwencji stosowanych w hermetyzacji, w myśl której klasa nie powinna, poza szczególnymi wyjątkami, zawierać publicznych pól. Jeżeli użytkownik ma mieć dostęp do jakiegoś pola, musi to robić za pośrednictwem dodatkowych metod, czyli ''getterów'' i ''setterów''. Zauważmy, że takie podejście pozwala nam tworzyć pola dostępne publicznie tylko do odczytu bez możliwości ich modyfikacji. Wystarczy zadeklarować je jako prywatne i stworzyć publiczny ''getter'', bez ''settera''. Przepiszmy zatem naszą klasę '''Person''' zgodnie z regułami hermetyzacji, ograniczając nieco dostęp:
<source lang="php" line><?php
|