![]() ![]() |
ARCHIV |
||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() |
|
červenec | |||||
Po | 5 | 12 | 19 | 26 | |
Út | 6 | 13 | 20 | 27 | |
St | 7 | 14 | 21 | 28 | |
Čt | 1 | 8 | 15 | 22 | 29 |
Pá | 2 | 9 | 16 | 23 | 30 |
So | 3 | 10 | 17 | 24 | 31 |
Ne | 4 | 11 | 18 | 25 |
Půjdeme na to tak, že vyvineme novou třídu, nazvanou lepsi_kalendar, která bude danou vlastnost implementovat. Třídy potomků se v PHP tvoří pomocí klíčového slova extends. My použijeme třídu, která bude mít oproti předchozí třídě jednu vlastnost navíc - bude umět zpracovat pole nazvané zvyrazni_dny; v našem případě tedy dny prvního, sedmého, osmého, třináctého a šestadvacátého. Bude to vypadat nějak takhle:
<?
class lepsi_kalendar extends kalendar
{
var $zvyrazni_dny;
//atd.
}
?>
Kde se v našem kalendáři tvoří obsahy jednotlivých buněk? Tvoří se v metodě Bunka(). A právě tuto metodu bude naše nová třída implementovat lepším způsobem než ta původní. Půjde se na to tak, že se prozkoumá pole $zvyrazni_dny, a jestliže se v něm najde číslo, které chceme právě vepsat do buňky, napíše se větším písmem a tučně. Pavel Kácha v seriálu o HTML nám vysvětlil jak na to, takže to bude maličkost. V následujícím kódu si všimněte, jak jednoduše se dceřiné třídy píší:
<?
class lepsi_kalendar extends kalendar
{
var $zvyrazni_dny;
function Bunka ($radek, $sloupec, $PrvniDen, $PocetDnu)
{
$dny=Array(1=>"Po", "Út", "St", "Čt", "Pá", "So", "Ne");
if ($sloupec==1) return $dny[$radek];
$chcivratit
= ($sloupec-2)*7 + $radek - $PrvniDen+1;
if ($chcivratit<1 || $chcivratit>$PocetDnu) return " ";
else
{
if (in_array($chcivratit, $this->zvyrazni_dny))
return "<B><BIG>".$chcivratit."</BIG></B>";
else return $chcivratit;
}
}
}
$muj_kalendar= new lepsi_kalendar;
$muj_kalendar->mesic=7;
$muj_kalendar->rok=2004;
$muj_kalendar->zvyrazni_dny = Array(1,7,8,13,26);
$muj_kalendar->vypis();
?>
Ukázat skript | Spustit skript
Kód jako takový si vyžadá jeden komentář a tím je použití funkce
in_array,
o níž jsme zatím nemluvili. Je to na pochopení jednoduchá
funkce - vrátí TRUE, pokud je daná hodnota (v našem případě
$chcivratit) v daném poli (v našem případě $this->zvyrazni_dny).
Pokud tam ten den je, vrátíme jako obsah buňky zvýrazněný text, pokud
ne, vrátíme text normální.
Daleko zajímavější je, jak funguje celý skript. Protože třída
lepsi_kalendar rozšiřuje třídu kalendar, dědí z této rodičovské třídy
všechno, co sama nedělá jinak. Tak například dědí vlastnosti mesic a rok, a dědí rovněž metodu vypis. Co nedědí je metoda Bunka, protože tu si upravuje k
obrazu svému. Je tedy jasné, že děděním můžeme získat řadu tříd, které
rozšiřují možnosti nějaké základní třídy.
To, co jsme uvedli nejsou všechny možnosti, které PHP pro práci s
objekty nabízí. Například existuje sada funkcí pro práci s objekty
a několik dalších možností při jejich vytváření. Co bychom ale
určitě vědět měli je skutečnost, že práce s objekty v PHP přináší svá
úskalí.
PHP nemá privátní metody.
To znamená, že v našem případě například neexistuje způsob, jak
zabránit tomu, aby se dala zavolat metoda Bunka zvnějšku třídy, ačkoli je to
metoda prospěšná pouze třídě jako takové a okolní svět by o ní vůbec
nemusel vědět. Odborně se principu, kdy je implementace metody ukryta
říká zapouzdření.
PHP zbaští nedeklarované atributy.
To může být hotová katastrofa.
Následující kód například bohužel bude fungovat přesto, že
stupidni_trida atribut $b vůbec nedeklaruje:
<?
class stupidni_trida
{
var $a;
}
$moje_trida=new
stupidni_trida;
$moje_trida->b=3;
echo $moje_trida->b;
?>
V PHP je neintuitivní přiřazování objektů. Co myslíte, že bude výsledkem následujícího skriptu?
<?
class stupidni_trida
{
var $a;
}
$prvni_trida=new
stupidni_trida;
$prvni_trida->a=1;
$druha_trida=$prvni_trida;
$druha_trida->a=2;
echo $prvni_trida->a; // není 2 ale 1
?>
Rovnítko (bohužel) nezpůsobí vytvoření odkazu na objekt, ale
vytvoření kopie objektu. Na to je třeba myslet.
Zda a jak budete v PHP používat objekty je samozřejmě na Vás. Níže
je ješě několik věcí a postřehů k objektům a PHP, které byste měli znát:
V dalším díle našeho seriálu opustíme OOP a podíváme se, jaké možnosti máme v PHP pro rozdělování zdrojových kódů do více fyzických souborů a jejich načítání.
Příspívat do diskuze mohou pouze registrovaní uživatelé. |
28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
31.7.2023 14:13 /
Linda Graham
iPhone Services
30.11.2022 9:32 /
Kyle McDermott
Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš
Re: zavináč
2.12.2018 23:56 /
František Kučera
Sraz
5.10.2018 17:12 /
Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?