this w PHP

W PHP, ale i w innych językach w programowaniu zorientowanym obiektowo, często używa się zmiennej $this. Jest ona dostępna wewnątrz obiektów i odnosi się ona do właściwości lub metody w danym obiekcie.

Zmienną tę stosuje się między innymi przy odwoływaniu się do pól klas za pomocą metod.

Pisaliśmy już, że możemy bezpośrednio odwołać się do danego pola klasy, o ile mamy do czynienia z polem publicznym. Nie zawsze jednak tak jest i nie zawsze jest to pożądane.

Hermetyzacja lub inaczej enkapsulacja polega na ukrywaniu pewnych danych. Często nie chcemy, żeby poszczególne składowe klasy (właściwości), mogły zostać zmieniane lub czytane z zewnątrz, ponieważ takie sytuacje mogą doprowadzić do nieprawidłowego działania naszych aplikacji. Im więcej udostępniamy na zewnątrz, tym bardziej może to być niebezpieczne.

Zdefiniowana klasa Konto_bankowe z pewnością będzie miała pole stan_konta. To pole dość wrażliwe i nie powinno być udostępniane na zewnątrz, a już na pewno modyfikowane bez kontroli.

Settery i gettery

Pokażemy teraz w jaki sposób z użyciem zmiennej $this zmieniać i odczytywać wartości pól w klasie (potocznie mówi się, że dla pola ustawiamy settery i gettery). Gettery i settery są metodami pozwalającymi na pobranie lub zmianę wartości prywatnego pola klasy z zewnątrz. 

Przykład 1

<?php
class Konto
{
private $stan;
public function setStan($wartosc)
{
$this->stan = $wartosc;
}
public function getStan()
{
return $this->stan;
}
}
$konto1 = new Konto();
$konto1->setStan(100);
echo 'Aktualny stan konta: '.$konto1->getStan().' PLN'; ?>

Zbudowaliśmy prostą klasę Konto z jednym tylko polem stan. Pole to jest prywatne (private), co oznacza, że nie jest widoczne na zewnątrz klasy i nie możemy go ani bezpośrednio odczytać, ani przypisać mu wartości. Możemy to zrobić za pomocą metod, które będą kontrolowały ten proces odczytu i zapisu, tylko odczytu lub tylko zapisu. Możemy na przykład w metodzie setStan() dodać warunek, że do konta można dopisać na przykład 10 000 zł i więcej pod warunkiem telefonicznego potwierdzenia transakcji.

Przykład 2

To podobny przykład do powyższego, zmodyfikowany o kontrolę kwoty przypisania transakcji do konta.

<?php
class Konto
{
private $stan;
public function setStan($wartosc)
{
if ($wartosc<10000) {$this->stan = $wartosc;} else {echo 'Ta kwota może zostać przelana na konto po telefonicznym potwierdzeniu transakcji przez operatora! <br>';$this->stan = 0;};
}
public function getStan()
{
return $this->stan;
}
}
$konto1 = new Konto();
$konto1->setStan(1000);
echo 'Transakcja na kwotę: '.$konto1->getStan().' PLN<br>';
$konto1->setStan(1000000);
echo 'Transakcja na kwotę: '.$konto1->getStan().' PLN<br>'; ?>




© medianauka.pl, 2021-11-27, A-4285



©® Media Nauka 2008-2023 r.