Wróćmy do kodu, który edytowaliśmy wcześniej. Otwórzmy plik class.First.php i wprowadźmy tam następujące zmiany:
<?php
class First {
public $name;
function sayWelcome() {
echo "Witaj $this->name!";
}
}
?>
Jak wynika z powyższego kody aby utworzyć właściwość klasy First o nazwie name wystarczy zadeklarować zmienną o nazwie właściwości. Aby odwołać się do tej właściwości należy należy użyć tego samego operatora, którym odwoływaliśmy się do metody, czyli ->.
W następnym przykładzie utworzymy obiekt, który będzie odwoływał się do naszej nowej właściwości.
Utwórzmy, więc nowy plik o nazwie testfirst.php o następującym kodzie:
<?php
require_once('class.First.php');
$objFirst = new First();
$objFirst -> name = 'Wojtek';
$objSecond = new First();
$objSecond -> name = 'Paweł';
$objFirst -> sayWelcome();
$objSecond -> sayWelcome();
?>
Spróbujmy wykonać powyższy kod. Jeżeli wszystko dobrze zrobiliśmy to w przeglądarce powinien pojawić się komunikat Witaj Wojtek!Witaj Paweł!. Ten przykład powinien dać już ogólne wyobrażenie o działaniu metod i właściwości.
Przy deklaracji właściwości użyliśmy słowa kluczowego public, które służy do określania zmiennych publicznych. Zmienne publiczne będą dostępne dla obiektów i klas spoza klasy, w której ta zmienna występuje. Oznacza to, że będziemy mogli ją wykorzystać w dowolnym momencie. Niektóre zmienne deklarowane w klasie istnieją tylko na potrzeby tej klasy i nie powinny być dostępne z poziomu zewnętrznego kodu. Powyższa przykład umożliwia ustawianie oraz pobieranie wartości właściwości name. Teraz metoda sayWelcome zamiast pobierać parametr, pobiera wartość name właściwości.
Użyliśmy również zmiennej $this, która informuje metodę obiektu, że ma pobrać wartość name dotyczącą bieżącego egzemplarza klasy. Jest to używane kiedy nie znamy zmiennej reprezentującej obiekt. Na podstawie tej klasy mogą być utworzone obiekty o różnych nazwach ale za pomocą zmiennej $this, wiemy, ze chodzi o właśnie przetwarzany obiekt. Widać to wyraźnie w poprzednim przykładzie, gdzie obiekt $objFirst i obiekt objSecond wyświetlają różne komunikaty, mimo że obydwa mają w sobie zawarty kod echo "Witaj $this->name!";. Jednak wcześniej miały przypisane różne wartości właściwości name.
Należy również pamiętać, że dostęp do właściwości wymaga tylko jednego $. Należy napisać $this->name, a nie $this->$name. Zmienna jest deklarowane na początku klasy jao public $name.
Możemy również deklarować zmienne wewnętrzne klasy służące do wykonywania wewnętrznych operacja w klasie. Obydwa rodzaje danych, a więc te publiczne, którym możemy przypisywać różne wartości oraz te do użytku wewnętrznego są nazywane wewnętrznymi zmiennymi składowymi klasy. Więcej na ich temat opowiem w kolejnym poście.
Brak komentarzy:
Prześlij komentarz