PHPDevs

Projekt obiektowy z Composerem i Twigiem? Czytaj!

Programowanie obiektowe > Lekcja 2

Właściwości i metody

Jak już wspomniałem, w każdej klasie możemy zdefiniować metody i właściwości tworzonych obiektów.

Właściwość nazwałbym w uproszczeniu zmienną w tym obiekcie (podobnie zresztą wygląda ich definicja, ze znakiem $ na początku) - możemy przypisać jej dowolną wartość, użyć jej w dowolnym miejscu tego obiektu itd. Zobaczmy jak takową zdefiniować:

<?php
class Car
{
    public $color;
}

Możemy też od razu przypisać jej jakąś wartość, na przykład:

<?php
class Car
{
    public $color = 'black';
}

php >=7.4 wprowadza określanie typu także dla właściwości. Wystarczy dodać go między public a nazwą.

<?php
class Car
{
    public string $color = 'black';
}

W tym momencie wartość, którą będzie przechowywała ta właściwość, może być tylko stringiem. Przy próbie przypisania innego typu otrzymamy stosowny Fatal error. Typem argumentu czy wartości, oprócz znanych Ci standardowo typów, może być także wskazanie konkretnej klasy, jakiej obiekt przekażemy/zwrócimy - dotyczy to zarówno OOP jak i samych funkcji.

Metody definiujemy równie prosto, przy użyciu słowa kluczowego function. Są to po prostu funkcje wykonywane na rzecz danego obiektu.

<?php
class Car
{
    public function getColor()
    {
        return 'black';
    }
}

Podobnie jak w zwykłych funkcjach, mamy możliwość przekazania argumentów oraz określenia ich typu php >=7, określenia typu zwracanej wartości php >=7 i tak dalej.

<?php
class Car
{
    public function getColor(string $text): string
    {
        return $text . 'black';
    }
}

Ciekawostka

php >=7.2 wprowadziło nowy typ object. Możemy nim określić, że argumentem/wartością zwróconą będzie jakiś obiekt, bez określenia jego klasy. Jednak, tam gdzie jest to możliwe, określałbym precyzyjnie o obiekcie jakiej klasy mowa.

Teraz tylko nasuwa się pytanie: jak dostać się do tej właściwości albo jak wywołać taką funkcję obiektu? To nic trudnego, służy nam do tego ->.

<?php
class Car
{
    public $color = 'black';

    public function getColor(string $text): string
    {
        return $text . 'black';
    }
}

$car = new Car();
echo $car->color; //result: black
echo $car->getColor('Color: '); // result: Color: black

Co ważne, przy odwoływaniu się do właściwości nie używamy znaku $!

Uwaga

W innych językach programowania w celu odwołania do właściwości/metody obiektu często używany jest znak . (kropki). Jednak w PHP jest to tylko -> (kropka jak pewnie pamiętasz służy do łączenia ciągów).

Modyfikatory dostępu

Słowo public nie pojawia się przed właściwością/metodą przypadkowo. Jest to modyfikator, który określa dostępność danego elementu.

Wyróżniamy 3 modyfikatory:

W sytuacji próby odwołania się do elementu, do którego nie powinniśmy mieć dostępu, ujrzymy odpowiedni błąd, dla powyższego przykładu:

Fatal error: Uncaught Error: Cannot access private property Car::$color in ...

Uwaga

Dla metod dopuszczalne jest również niepodanie żadnego modyfikatora i wtedy domyślnie nadany zostanie public. Jest to jednak praktyka bardzo niepolecana, gdyż zaciemnia kod. Po podaniu modyfikatora widać od razu jaki jest i że ktoś umyślnie go tam wpisał.

Modyfikatory zostały stworzone, aby chronić pewne właściwości przed zmianą czy metody przed wywołaniem. Należy używać ich z rozwagą, rozpatrzyć każdy przypadek indywidualnie w trakcie pisania. Panuje też zasada, że co nie musi być widoczne dla wszystkich, takowe być nie powinno.

Poprzednia lekcja Następna lekcja

Udostępnij

  • Facebook
  • Twitter

Komentarze