You are hereTworzenie klas i obiektów dla PHP 4
Tworzenie klas i obiektów dla PHP 4
Definiowanie klasy, tworzenie obiektu oraz wywoływanie metod dla obiektu nie jest trudne. W naszym prostym przykładzie spróbujemy utworzyć klasę, której parametrem będzie liczba określająca miesiąc. Jedna z metod będzie odpowiedzialna za pobranie parametru wejściowego(konstruktor klasy), a druga za jej wizualizację. Zanim zaczniemy jedna ważna uwaga: poniższy kod jest w wersji PHP 4.x, który różni się od składni w wersji PHP 5.x. Ale o różnicach między wersjami może trochę później.No to zaczynamy ....
Zdefiniowanie klasy
Na poczatku musimy określić nazwę klasy; robimy to poprzez deklarację
- class nazwa_klasy {...}
W naszym przypadku klasa ma nazwę rok. W definicji klasy nie umieszczamy żadnych parametrów wejściowych.
Właściwości
Kolejnym krokiem jest definicja właściwości klasy; robimy to używając składni:
- var $nazwa_zmiennej='wartość_początkowa';
- var $nazwa_zmiennej=array('wartości początkowe');
//przypadku deklaracji tablicy
.
Parametr 'wartość_początkowa' jest oczywiście opcjonalny. Dla potrzeb przykładu utworzyłem trzy zmienne: $miesiace, która definiuje nazwy miesięcy, $sezon przetrzymująca nazwę pory roku dla podanego miesiąca, oraz $err która przetrzymuje informację na temat poprawności wprowadzenia liczby określającej miesiąc.
Konstruktor
Konstruktor to innymi słowy metoda(funkcja), która jest wykonywana zawsze po utworzeniu obiektu. Konstruktor jest opcjonalny(klasa nie musi go zawierać) i jak widać to właśne w nim są zdefiniowane parametry wejściowe klasy. Konstruktor ma postać:
- function nazwa_klasy($par1,..,$parx)
i jak widać nazwa tej funkcji to nazwa klasy. Parametry są opcjonalne, konstruktor nie musi zawierać żadnych parametrów.
W naszym przykładzie konstruktor function rok($miesiac){...} sprawdza czy podany parametr mieści się zakresie dopuszczalnych wartości. Jeśli tak to wprowadza do właściwości $mies nazwę miesiąca z tablicy $miesiace.
$this->mies=$this->miesiace[$miesiac];
Zauważ, że odwołanie się do właściwości i metod wewnątrz klasy koniecznie następuje prz użyciu operatora $this->nazwa_właściwości_lub_metody
Metoda
Metody wykonują przeróżne operacje na obiekcie lub ten obiekt modyfikują. W naszym przykładzie metoda pokaz() w zależności od poprawności wprowadzenia liczby określającej miesiąc wyświetla albo komunikat o błędzie, albo nazwę miesiąca oraz porę roku.
To tyle pokrótce na temat definiowania klasy, przejdźmy teraz do tworzenia obiektów i wywoływania metod.
Obiekt
Aby utworzyć obiekt należy określić jego nazwę(uchwyt). Tworzenie egzemplarza polega na wywołaniu polecenia
- $nazwa_obiektu=new NazwaKlasy('parametry_konstruktora')
.
W naszym przykładzie tworzymy dwa obiekty:
$obiekt1=new rok('6');
$obiekt2=new rok('12');
Wywołanie metody przez obiekt
Jeśli chcemy aby nasz obiekt coś zrobił musimy wywołać odpowiednią metodę, która dla nas jest naszym interfejsem. Metodę wywołuje się w następujący sposób:
- $nazwa_obiektu->metoda()
Jak widać wywołanie metody spoza klasy(poprzez obiekt) różni się wywołaniem metody z wnętrza klasy tym, że zamiast wyrażenia $this-> piszemy $nazwa_obiektu->.
Dla naszego przykładu mamy:
$obiekt1->pokaz(); $obiekt2->pokaz();
I to właściwie tyle jeśli o techniczną stronę tworzenia klasy i obiektów dla wersji 4.x. Życzę miłej pracy nad klasami i obiektami. W kolejnych artykułach postaram się wyjaśnić w jaki sposób wykorzystać dziedziczenie klas oraz inne cechy programowania obiektowego.
<?php
class rok{
//Określamy właściwości klasy - definiujemy tablicę
//przechwytującą miesiące należące do podanej pory roku
var $miesiace=array("1"=>"Styczeń", "2"=>"Luty", "3"=>"Marzec", "4"=>"Kwiecień",
"5"=>"Maj", "6"=>"Czerwiec", "7"=>"Lipiec", "8"=>"Sierpień",
"9"=>"Wrzesień", "10"=>"Październik", "11"=>"Listopad",
"12"=>"Grudzień");
var $mies;
var $sezon;
var $err=false; //wskaźnik błędu
//Określamy konstruktor, który w zależności od pory roku będzie
//zapisywał miesiące do tablicy
function rok($miesiac){
if (($miesiac>=1) && ($miesiac<=12))
{
$this->mies=$this->miesiace[$miesiac];
if (($miesiac==1) || ($miesiac==2) || ($miesiac==12)){
$this->sezon="Zima";}
if (($miesiac>2) && ($miesiac<6)) $this->sezon=="Wiosna";
if (($miesiac>5) && ($miesiac<9)) $this->sezon="Lato";
if (($miesiac>8) && ($miesiac<12)) $this->sezon="Jesień";
}else{
$this->err=true;
}
}
//określamy metodę która będzie odpowiadała za wyświetlanie komunikatów
function pokaz(){
if (!$this->err){
echo "Miesiąc: <b>".$this->mies."</b>, ";
echo "Pora roku: <b>".$this->sezon."</b><br />";
}else{
echo "<b>Błąd</b>: nieprawidłowy miesiąc. ";
echo "Liczba musi być z zakresu [1-12]<br />";
}
}
//koniec def. klasy
}
//TWORZENIE OBIEKTÓW
//pierwszy obiekt
$obiekt1=new rok('6');
$obiekt1->pokaz();
//drugi obiekt
$obiekt2=new rok('12');
$obiekt2->pokaz();
?>
Wynik:
Miesiąc: Czerwiec, Pora roku: Lato
Miesiąc: Grudzień, Pora roku: Zima