ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
PHP (19) - ObjektyPHP umí pracovat s objekty. Podívejme se jak. PHP umí pracovat s objekty. Podívejme se jak. Původně jsem si pohrával s myšlenkou objektově orientované
programování do tohoto seriálu vůbec nezařadit. Nakonec mi to nedalo,
takže následující řádky budou pokus shrnout základy OOP (což je zkratka pro
objektově orientované programování) a převést příklad s kalednářem,
který jsme již dříve v tomto seriálu použili do "objektové" podoby.
Pokud jste pomocí objektů
nikdy neprogramovali, nemyslím si, že PHP je tou nejlepší volbou do
začátku, ale jeho znalost Vás určitě obohatí. Myšlenka objektového programování je prostá. Zatímco procedurální
programování používá při vykonávání výpočetních úloh proměnné a funkce,
objektové programování používá zvláštní struktury nazvané objekty.
Objekt obsahuje jak data (například proměnné) tak i popis způsobů, jak
s nimi manipulovat (členské metody). Díky tomu může obecně řečeno
objektové programování řešit některé věci pružněji než procedurální. Hlavní výhodou objektů je fakt, že umožňují popisovat věci tak, jak
fungují v běžném životě. Například mobilní telefon má určité vlastnosti
(barvu, typ, výdrž baterie apod.), ale rovněž určité věci umí (tak
třeba bychom ho mohli popsat metodami VytocCislo, PrijmiHovor,
ZobrazSeznam a podobně). V objektově orientovaných jazycích hovoříme o
tom, že objekty mají stav ("co to je") a chování ("co to umí"). Objekty se v OOP musejí nejprve nadefinovat. K definici objektu slouží takzvané třídy. Třída je něco jako šablona nebo prototyp, na jehož základě se budou objekty tvořit; v PHP se třída definuje pomocí klíčového slova class. Protože jsem slíbil, že upravím příklad z kalednářem z našeho seriálu, vytvoříme třídu, která se bude jmenovat kalendar: <? Třída by měla definovat nějaké atributy. V našem případě budeme zobrazovat kalendář pro nějaký měsíc a rok, a to jsou ty atributy, které hledáme. V PHP se zapisují pomocí klíčového slova var. <? Většina tříd definuje také chování objektu. My použijeme metodu vypis(), která nám celý kalendář vypíše do prohlížeče. Podstatná část kódu je stejná jako v původním příkladu s funkcemi, takže uvedu hned celý kód: <? Ukázat skript | Spustit skript Z ukázky můžeme vidět několik věcí. Tak třeba to, že uvnitř těla
třídy se metody definují úplně stejně jako funkce, které už známe.
Jestliže se chceme odkázat na členskou proměnnou (třeba na $mesic),
pokužívá se klíčové slovo $this. Nejzajímavější jsou ale poslední čtyři
řádky ukázky, které předvádějí ne tvorbu
třídy (už je hotová), ale práci
s ní. Pomocí klíčového slova new jsme vytvořili instanci neboli objekt třídy
kalendar. Našemu konkrétnímu objektu jsme přiřadili atributy (měsíc a
rok) a následně jsme použili jeho metodu
vypis(), která způsobila
vypsání kalendáře. Ještě poznámka: jelikož metody nevracejí hodnotu,
upravili jsme v testu platnosti proměnných kontroly tak, že místo
return používají echo. Samozřejmě, že bychom mohli vytvořit více instancí třídy kalendar a každá by mohla mít jiné atributy. Tak třeba, následující kód by zobrazil celé čtvrtletí: <? Ukázat skript | Spustit skript KonstruktorTřída nemusí, ale může definovat metodu, která se jmenuje stejně jako třída samotná a nazývá se konstruktor. Konstruktor se spustí automaticky při vytvoření instance a my jej použijeme pro definici požadovaného měsíce a roku. Jak uvidíme, povede to k tomu, že si později při volání objektu ušetříme psaní. Přepsaný příklad tedy bude: <? Ukázat skript | Spustit skript Neboli, konstruktory nejčastěji slouží k usnadnění úkonů, které jsou
spojeny s inicializací objektů. Objekt byste samozřejmě i nadále mohli
inicializovat pomocí toho prvního způsobu, je to pouze na
programátorovi. Většina objektově orientovaných jazyků používá ještě
tzv. destruktory, což jsou metody volané při ničení objektu. PHP nic
takového nemá, především proto, že objekty v PHP "žijí" pouze od svého
vytvoření do doby, než stránka dorazí do prohlížeče. V dalším díle si ukážeme něco o dědičnosti objektů a probereme některé důvody, proč se někteří rozhodli objekty v PHP nepoužívat.
Související články
Předchozí Celou kategorii (seriál) Další
PHP (1) - Historie a budoucnost
PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Byte order mark a PHP Předchozí Celou kategorii (seriál) Další Ke stažení jako HTML nebo jako PDF.
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |