Přeskočit na hlavní obsah

OOP v PHP 2 - základy

Minule jsem ukázal základní vlastnosti OO kódu. Dnes se pustím do bližší specifikace, základů psaní OO kódu.

Na začátku je dobré brát v potaz, že OO kód by měl být samodokumentovatelný. To znamená, že kód je srozumitelný nejen pro počítač, ale také pro člověka. Pokud budu vycházet z tohoto základu, tak mi z toho vychází, že budu muset dodržovat základní principy při psaní OO kódu.

Začnu pěkne od začátku:

Třídy:

Název třídy se vždy uvádí velkým písmenem.
Název třídy je podstatné jméno, nikoli sloveso.
Pokud název třídy obsahuje více slov, používá se tzv. VelbloudiNotace.

Další důležitou roli hraje samotný název, který by neměl kolidovat s jiným názvem třídy. Ve skutečných OO jazycích je toto řešeno pomocí např. balíčků (packages) v Javě. Samotný balíček má i další vlastnosti, ale nám by stačilo, kdyby v PHP existoval alespoň v základní úrovni. Uvedu název balíčku, do kterého danná třída spadá a když budu potřebovat někde vytvořit objekt z této třídy, uvedu název třídy i s balíčkem. Název balíčku vlastně odpovídá adresářové struktuře, kde je má třída uložena (např. org.dostal.Zamestnanci by bylo v adresáři /org/dostal/Zamestnanci.class). Krásné, že?

Bohužel PHP nic takového nemá. Proto je třeba volit jiný postup. Budeme vycházet z toho, že třídy vkládáme do vlastní adresářové struktury a tuto strukturu odvodíme pomocí názvu třídy. Jako oddělovač jsem zvolil "_", což asi nejlépe odpovídá tomu, jak identifikovat strukturu, kde mám třídu uloženou.

Příklad:
Vytvořím adresar "Model", do něj vytvořím adresář "Table". Poté vytvořím soubor s názvem "Filtr.php". Nakonec do souboru vytvořím třídu "class Model_Table_Filtr {}". Díky tomu jsem schopný identifikovat, kde třída "Filtr" vlastně leží.

Další zásadou je, že jeden soubor = jedna třída. Nemá smysl o tomto polemizovat, je to způso, který se osvědčil nejenom v PHP.

Atributy tříd:

Atributy tříd by měly být vždy zapouzdřené, jinak řečeno, zvenku by k nim měl existovat pouze přístup přes setry a getry.
Atribut třídy začíná malým písmenem a pokračuje opět velbloudí notací.
Toto do začátku stačí.

Metody:

Název metody začíná vždy malým písmenem.
Opět se využívá velbloudí notace.
Název metody by mělo být sloveso (např. filtruj, zobraz, atd.), samozřejme to neplatí vždy.
Metody začínající na set... jsou setry, nastavující nějakou hodnotu.
Metody začínající na get... jsou getry, vracející nějakou hodnotu.
Metody začínající na add... přidávají k nějaké hodnotě, další hodnotu.
Metody načínající na is.. jsou kontrolní a vracejí Boolean (true, false) hodnotu.
Metoda toString() vrací informaci o třídě.
Existují další metody, tzv. magické metody začínající dvěma podržítkama, které proberu později.
Jsou i jiné specifika, které teď nemá cenu rozebírat, pro začátek toto stačí.

I když jsou tyto informace dost nudné, jsou velice důležité pro další vývoj v objektově orientovaném programování.

Existuje spoustu doporučení a spousty standardů, čeho se držet, ale já vycházím z javovské konvence, která mi osobně přijde nejlepší.

Nyní opět malá ukázka toho, jak by měl vypadat standardní OO kód.

class Auto
{
private $barva;
private $rychlost = 0;

public function __construct() {}

public function setBarva($barva)
{
$this->barva = $barva;
}

public function getBarva()
{
return $this->barva;
}

public function setRychlost($rychlost)
{
$this->rychlost = (int) $rychlost;
}

public function getRychlost()
{
return $this->rychlost;
}

public function isRychlost()
{
return (boolean) $this->rychlost;
}
}
?>


Příště už se pustím do samotného programování a proberu věci jako: typová kontrola, abstraktní třídy nebo interface.

Komentáře

  1. Niektory pouzivaju emulaciu nazvy balickov ale namiesto org.dostal.Za­mestnanci treba potom pisat napriklad: org_dostal_Za­mestnanci. include potom riesia automaticky pomocou magizkou funkciou __autoload() kde nazov triedy rozparsuju a poskladaju z toho cestu k suboru (napr.: str_replace('_','/',$nazov);).
    Mne osobne sa tento sposob nepaci, ale treba povedat ze imporotvanie suborov v PHP je riesene podla mna nespravne.

    OdpovědětVymazat

Okomentovat

Populární příspěvky z tohoto blogu

Jak si v IT vydělat hodně peněz?

Na začátek by bylo dobré, abych objasnil samotný titulek, který může na někoho působit jako červený hadr. Článek nebude o obecných pravidlech, ale bude vyprávět můj vlastní příběh, na kterém vám zkusím ukázat, jak se dá docílit úspěchu, či alespoň správně nastartovat svojí vlastní kariéru v IT.

I když se z názvu článku dá dedukovat, že se vše bude točit kolem peněz, není tomu tak. Alespoň ze dvou třetin určitě ne. Ale to už předbíhám, pojďme to raději vzít hezky popořadě...

Kdybychom měli mluvit o roce 2017 jako o přelomové době, nejspíše to nebude pravda. I když pro někoho to může být rok plný úspěchů a štěstí v podobě narození zdravých dětí, svatby či první velké lásky, tak z pohledu lidstva se jedná o rok, který jen kopíruje předešlé a v oblasti technologií nás posouvá stejným tempem jako rok předtím.

Jsem naprosto přesvědčen o tom, že i když se současná doba tak nenazývá, tak prožíváme dobu, která jednou bude označena za revoluční, a to zejména díky vynálezu internetu, který je s…

Jak by se firmy neměly chovat k programátorům?

Každý, kdo pracuje v IT oboru, se jistě již setkal s různými „geniálními nápady“, od kterých si firma slibovala zlepšení produktivity či snížení nákladů. Ať už je to zavedení agilních principů, striktní kontrola práce či zavedení nové a skvělé metodiky, o které si „šéf“ přečetl včera na internetu. Jsou z toho skutečně tak nadšení i samotní vývojáři? A bude nový nápad fungovat?
K napsání tohoto článku mě navedly různé programátorské diskuze, kde si lidé stěžovali na firmu, kde pracují. Příklady, které zde uvedu, jsou z reálné praxe. Ať už jsem je zažil jako řadový programátor, či jako šéf týmu.
I když je poptávka po programátorech tak vysoká, že Vás headhunteři nahánějí i ve chvílích, kdy o to opravdu nestojíte, tak i přes to je mnoho lidí, kteří se bojí opustit svoje současné zaměstnání.
Čeho se nejčastěji bojíme? Je to samozřejmě nejistota, kterou si často omlouváme větami jako: „Tady mám své pohodlí, co když to jinde mít nebudu?“ nebo „I když mě to v práci štve a nebaví, tak mě ale…

Jak jsem technologicky postavil startup

Tento příběh pojednává o technologiích, nástrojích a vůbec o všem, co jsem potřeboval k tomu, abych byl schopen, postavit startup na zelené louce.

Každý správný příběh začíná stejně: "Jednou jsem...."

Kapitola první: Nápad
Jednou jsem se setkal s člověkem, který měl nápad na produkt, který se v průmyslu zatím nevyskytuje. I přes prvotní skepsi, kdy jsem si říkal: "Tohle už přeci dávno v průmyslu existuje, ne?", jsem došel ke zjištění, že nikoli.

Tím jsem se dostal ke svému prvnímu poučení. Průmysl je technologicky dost zabržděný. Osobně se domnívám, že těch důvodů, proč tomu tak je, je několik. Za prvé je to fakt, že většina lidí, kteří se pohybují v tomto odvětví jsou často konzervativní a za správné považují pouze léty osvědčené věci. Druhým důvodem je to, že jakákoli změna znamená riziko. Ať už z pohledu finanční ztráty tak i z pohledu stability výroby. No a třetím a nejzásadnějším důvodem je to, že ač zde máme spousty technologických vymožeností, narážíme na to,…