Nová verze tohoto webu se nachází na www.tutorialy.com

homeforumTutorialy.com
 
Reklama
Programujeme objektově v PHP – díl třetí
Programujeme objektově v PHP – díl třetí
Programujeme objektově v PHP – díl třetí
V dnešním díle se podíváme na základní stavební kámen pro objektově orientované programování - třídy
Autor: Neuronic | Kategorie: Tvorba webu > PHP | Zhlédnuto: 3987x |
Hodnocení: 1.8 | Komentáře (6) | Obtížnost: Pokročilý | Vloženo: 27.1.2007

V dnešním díle se podíváme na základní stavební kámen pro objektově orientované programování

V prvním díle o OOP jsme si řekli, co to vlastně „Třídy“ jsou a k čemu slouží. V dneším díle vám ukážu, jak třídy vypadají programově.

Nejdříve si řekneme pár pravidel o třídách

Je nepsaným pravidlem pojmenovávat název souboru pro třídy tímto způsobem „MyClass.clas­s.php“. Jde vlastně o to, že namísto tvaru „MyClass.php“ přidáme mezi „MyClass“ a „.php“ ještě navíc „.class“. Je to pouze z důvodu odlišení třídy od klasické php stránky.

K pojmenování souboru se vztahuje ještě jedno pravidlo a to, že soubory se pojmenovávají vždy stejně jako třída uvnitř souboru. Tzn. máte-li třídu Animal, bude se soubor jmenovat Animal.class.php.

Nepiště víc tříd do jednoho souboru, každý soubor má obsahovat nanejvýš jednu třídu. Opět se to týká přehlednosti a struktůry vašeho webu.

Názvy tříd začínejte vždy prvním velkým písmenem.

Jak tedy vypadá taková třída programově?

class Animal {
//----------------------- Proměnné třídy --------------------------
        private $speed; // rychlost zvířete
        private $weight; // váha zvířete

//---------------------- Konstruktor třídy ------------------------
        /**
         * Konstruktor
         * vytvoří novou instanci třídy Animal
         */
        public function Animal($speed, $weight) {
                $this->speed = $speed;
                $this->weight = $weight;
        }

        nebo

        public function __construct($speed, $weight) {
                $this->speed = $speed;
                $this->weight = $weight;
        }

//--------------------- Funkce třídy -----------------------------
        /**
        * Get speed
        * @return integer
        */
        public function getSpeed() {
                return $this->speed;
        }

        /**
        * Set speed
        * @param integer
        */
        public function setSpeed($speed) {
                $this->speed = $speed;
        }

        /**
        * Get weight
        * @return integer
        */
        public function getWeight() {
                return $this->weight;
        }

        /**
        * Set weight
        * @param integer
        */
        public function setWeight($weight) {
                $this->weight = $weight;
        }
}

Teď vám popíšu jednotlivé části třídy Animal. Začnu shora a to deklarováním samotné třídy pomocí výrazu

class Animal {
}

Napsáním slova class bude PHP vědet, že se jedná o třídu a název za ním uvedeným je typ této třídy. Vše, co se nachází ve složených závorkách je obsah neboli implementace dané třídy.

Na začátku třídy (není to podmínka) se píšou proměnné třídy (její vlastnosti) jako v našem případě rychlost a váha zvířete. Vlastnosti třídy nejsou omezeny pouze na základní datové typy jako string, integer, char, boolean ale taky na pole a jiné datové typy jako například úplně jiný objekt.

Další velmi důležitou věcí v třídě je tzv. „konstruktor“. Jeho účelem je vytvoření nové instance třídy (nového objektu typu Animal). Do jeho atributů se píší hodnoty, které by měl daný objekt mít při jeho vytvořením. V našem případě je to rychlost a váha. PHP umožňuje 2 druhy implementace konstruktoru, takže záleží jenom na vás, který z nich si zvolíte. V prvním případě se kontruktor píše jako běžná funkce, která má název stejný jako název dané třídy. Druhý způsob se píše taky jako běžná funkce, ale její název je vždy „__construct“.

Poznámka: Konstruktor by měl být deklarován s viditelnosti public, pokud napíšete konstruktor s viditelnosti private, nebude možné vytvořit instanci třídy.

Nakonec nám zbyly „operace“ neboli „metody“ neboli „funkce“ třídy. Jejich význam jsem již řekl v prvním díle, takže teď pouze vysvětlím co znamenají tzv. „gettry“ a „settry“. Jejich význam je jednoduchý, pouze vracejí nebo nastavují určité proměnné třídy. To znamená, když chcete získat hodnotu proměnné $speed z naší třídy Animal, musíte zavolat funkci getSpeed(), která nám vrátí požadovanou vlastnost. Naopak voláním metody setSpeed($speed) můžete nastavit novou hodnotu do proměnné $speed. Možná si říkáte, proč nevolat rovnou proměnnou třídy, kterou vyžaduji? Je to z důvodu zapouzdření jak jsem již zmiňoval v prvním díle. Proměnné by neměly být viditelné navenek, pouze s nimi můžeme manipulovat pomocí funkcí, které tvoří obal třídy.

Poznámka: „get“ a „set“ jsou pouze standardami mezi programátory. Pokaždé, když chcete získat určitou hodnotu budete tedy psát „get…“ místo hádání jak jsem vlastně danou funkci pojmenoval. To taky platí pro „set…“, nemusíte hádat jak jste funkci pojmenovali, protože všechny budou začínat stejně. Naprosto nevhodné je pojmenovávat tyto funkce například ziskejNeco(), vratNeco(), nastavNeco() atd… Sami určitě cítíte, že použitím „get“ a „set“ se jedná o elegantní způsob.

A na závěr vám ještě ukážu, jak vytvořit objekt z třídy:

$animal = new Animal();

Veškerý kód se týká pouze PHP 5, pokud používáte starší verzi PHP, je možné, že určité věci vám nepojedou.

To je z dnešního dílu vše a v příštím díle se podíváme na viditelnosti.


Hodnocení tutoriálu: 1.8 (hodnotilo 16 uživatelů)

Ohodnoťte tutoriál (jako ve škole):

Tutorialy.com © 2006 Marek Čapla & Filda | výměna odkazů | mapa webu | RSS zdroj | PageRank: 4 | ISSN 0322-9289

Online flash hry