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';
}

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';
    }
}

Tak jak w przypadku zwykłych funkcji jest możliwość przekazanie argumentów, określenia typu zwracanej wartości i tak dalej.

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

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
  • Google+

Komentarze