PHP/Klasy i obiekty: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Zyx (dyskusja | edycje)
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