Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

piątek, 24 lipca 2009

Programowanie obiektowe (cz. 7) - dodawanie właściwości

Dodawanie właściwości do klasy jest bardzo prostym procesem. Nie różni się zbytnio od tworzenia zmiennych w kodzie proceduralnym. W programowaniu obiektowym definiujemy właściwość poprzez utworzenie zmiennej na początku deklaracji klasy, w obrębie klamer zawierających ciało klasy. Należy pamiętać, że nazwa zmiennej jest nazwą właściwości, więc jeżeli utworzymy zmienną $speed to właściwość będzie nazywała się speed.
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: