tvorba objektovo orientovanych webov PHP

Programovacie jazyky, rady, poradňa...
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

tvorba objektovo orientovanych webov PHP

Príspevok od používateľa *****HERO***** »

zdravim,

vedeli by ste mi ohladom pokrocilejsieho web developingu - tvorba OO webov, nejake priklady k tomu a pod?

ovladam PHP, HTML, CSS a JS. dalo by sa povedat, ze vsetko iba take zaklady, zatial som nemal potrebu sa ucit viac.

doteraz som bol v tom, ze sa da vsetko naucit z nejakych guidov na nete a celkom mi to tak aj islo, ale uz to zacina byt narocnejsie a nechapem niektorym veciam pri tvorbe komplexnejsich webov, tak dufam, ze mi to pomozete objasnit. ide hlavne o pouzitie OOP pri tvorbe webov. ucil som sa kvoli tomu aj Javu, ktora je plne objektovo orientovana a tam mi to celkom ide - viem si to lepsie predstavit. naucil som sa aj pouzivat GUI, tak som si spravil primitivnu hru, kde som si precvicil OOP. teoriu teda ovladam, viem o dedicnosti, poznam typy metod, clenskych premien, typy tried. jednoducho povedane, lepsie si to viem predstavit v hrach, kde mam povedzme nejake auto, ktore ma metody zrychli a spomal a premenne farba a model, ale co sa tyka webov, nic mi nenapada. vsetky navody su totiz pisane iba teoreticky a tych konkretnych prikladov je tam velmi malo.

ak by mi to vedel niekto polopatisticky vysvetlit, pripadne dolozit nejaky jeho kod, nehneval by som sa. v opacnom pripade si asi budem musiet kupit nejaku knihu, tak mozte pripadne hodit aj nejaky navrh.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa audiotrack »

pri weboch sú tie triedy trošku abstraktnejšie. Ako prísť na vhodné triedy je celá veda, ktorá zahrňa analýzu a návrh. Je to imho jedna z tých nudnejších častí programovania, kde sa väčšinou len kreslia grafy a diagramy. Ale také spoločné triedy čo ti výjdu skoro pri každom webe bývajú user (metody napríklad login, logout, register, modify.. a atribúty id, nick, pass...) alebo si prihlasovanie a odhlasovanie hodíš do samostatnej triedy (metody login, logou, register, islogged... ). Iný príklad by sa dal napísať keby povieš čomu sa ten web venuje. Napríklad v mojom cms čo tu je niekde téma mám triedy modul od ktorej dedia jednotlivé moduly (textmodul, searchmodul, gallerymodul...) alebo v inom svojom webe (audiotrack.hojko.com) mám triedu čo sa stará o jednotlivé levely a má na starosti kontrolovanie odpovede, presmerovanie na nový level pri správnej odpovedi...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa harrison314 »

VMC - to bolo na tomto fore vysvetlovane milonkrat.
Factory - uzitocna vec.

A ostatne je uz len na tebe.
Este k tym znalostiam ti chbyju databazy, bez nich "velky a moderny" web nepravis.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa *****HERO***** »

s MySQL pracovat viem, zabudol som to spomenut.

o VMC ani Factory som nic nepocul a google mi tiez nic rozumne nechce najst, co to je?

audiotrack: no o tych konkretnych veciach ako login som uz rozmyslal a class na to by som napisat vedel, skor ma ale trapia uplne tie zaklady.

skusil som si teda napisat nieco, co mi vytvori nejaku zakladnu html stranku, chapem to zatial spravne?

Kód: Vybrať všetko

<?php
class page
{
private $head, $body;

      function __construct($doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">", $title = "Default title")
      {
            $head = new head($doctype, $title);
            $body = new body();
      }
}


class head
{
      private $doctype, $title;
      
      function __construct($doctype, $title)
      {
            echo <<<HTML
            $doctype
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>$title</title>
            </head>
HTML;
      }

}

class body
{
      function __construct()
      {
            if(!$_GET["link"])
                  include "default.php";
                  
            elseif($_GET["link"] == "login")
                  include "login.php";
                  
            else
                  include "error.php";
      }
}


?>

to tvoje CMS je dostupne aj so zdrojakom? alebo aspon nejaka jeho demo verzia s minimalnou funkcionalitou? ja si myslim, ze by mi uplne stacilo pozriet nejaky hotovy zdrojak jednoduchsieho webu a nejak by sa to na mna nalepilo.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa audiotrack »

vmc si nenašiel, pretože to nie je vmc ale mvc a factory je jeden zo základných návrhových vzorov
vvoody
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 29 máj 2011, 17:45

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa vvoody »

nie som v tomto obore až tak zbehnutý, tak ma opravte ak napíšem nejakú hlúposť ale asi to spravíte aj keby tam nebola žiadna..

hero: cieľom takého slušnejšieho tvorenia webov v php je aby bol kód znovupoužitelný - takže funkcie tried vykonávajú viacmenej len elementárne operácie, čo je vlastne pravidlo (lepšie povedané dobrý návyk) vo všetkých oop jazykoch, taký kód sa ľahko udržuje a modifikuje keď sa zmenia požiadavky na funkcionalitu aplikácie

ďalej MVC hovorí o rozdelení kódu na tri základné časti: model-view-controller
model - tato časť má za úlohu získavať údaje z databáze (alebo aj z iných zdrojov podla typu aplikácie) a modifikovať (či unifikovať?) do podoby s ktorou bude pracovať zvyšok aplikácie
view - tato časť by sa mala starať o zobrazenie celej stránky
controler - ten to všetko spája a jeho úlohou je spracovávať requesty od užívateľa, pýtať si dáta od model-u a predať ich view-u

no a dôvod je znovu jednoduchý, takto budeš mať krajší kód :D a hlavne sa ti bude oveľa jednoduchšie upravovať dizajn alebo napríklad rovno robiť celé nové šablóny, ľahšie sa bude implementovať nová funkcionalita, bude doslova radosť robiť s takým kódom ;) ale to už sú vlastne pravidlá a výhody každého objektového kódu. Ak si si teda nevedel predstaviť čo by mali objekty predstavovať v takej webovej aplikácii tak MVC by zlá voľba určite byť nemala. Samozrejme nebudú to tri veľké objekty, no podstatné je že jeden objekt by mal implementovať buď model, controler alebo view, nech sa napríklad nemiešajú dotazy do DB s užívateľským rozhraním.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa *****HERO***** »

a nejake priklady k tomu nemas? lebo ja to proste takto nepochopim, mam v tom neskutocny bordel. za posledny tyzden som precital tolko guidov ako na OO weby a kazdy bol uplne o niecom inom a napriklad to, co mi tu teraz pisete, tam nebolo ani zmienene.

cele PHPcko som sa naucil tak, ze som si stiahol nejaky hotovy kod a zacal som sa v nom rypat, az kym som nepochytil tie zaklady a az potom som si k tomu docital teoriu o vsetkych moznych funkciach, frameworkoch, bezbecnosti a pod. bola k tomu na nete fajn dokumentacia a nie je to tazke na pochopenie, ale co sa toho OOP tyka, tak to je pre mna mrtvy bod uz niekolko mesiacov. vsade je proste pisana teoria. neviem sa dopracovat k ziadnemu normalnemu navodu ako navrhnut konkretny web pomocou tych vselijakych UML, MVC, Factory diagramov a napisat kod. proste ja to musim najprv vidiet a poskusat, aby som videl ako to priblizne funguje a az potom to dopodrobna prebrat

vazne si cennim vasu pomoc, ale takymto sposobom mi to do hlavy nejde, preto som sa zmienil aj o nejakom navode na nete, pripadne odbornej literature, kde by na to isli viac z toho praktickejsieho hladiska.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa audiotrack »

keby bol návod na tvorbu OOP webov, tak by všetky vyzerali rovnako. Najprv musíš pochopiť, že žiaden návod neexistuje. Programovanie je o nápaditosti riešenia problémov. Vždy je problém iný, a aj keď sú dva podobné tak sa dajú vyriešiť množstvom rôznych spôsobov. Akýsi pokus o riešenie typických problémov sú práve návrhové vzory. Napríklad vzor singleton ti hovorí ako spraviť objekt, keď chceme mať zaručené že v systéme bude vždy len jedna jeho inštancia. Tých vzorov je vyše stovky, základných je asi 20 čo sa učí na výške. K diagramom: všelijaké UML a podobne sú ti potrebné hlavne keď pracuješ v týme, lebo slovne nedokážeš povedať iným programátorom, klientom, manažérom a podobne všetko potrebné tak formálne, jasne a jednoducho. Ak si programuješ všetko sám, a programuješ agilne, tak ti to (zčasti) nie je potrebné pokiaľ nebudeš robiť veľký web kde bude analýza klúčová. Frameworky tiež nemusíš používať, osobne nepoužívam žiadne. Na jednu stranu ti síce urýchlujú kodenie, na stranú druhú degradujú programovanie. Mám dosť skúseností na to, aby som spravil všetko čo potrebujem aj bez frameworku (výnimkou je javascript, kde mám celkom rád jquery a prototype, ale pri php ma zatiaľ žiaden neoslovil). Takže sa neorientuj na tieto veci. Programuj stránky tak ako si robil doteraz, ale keď narazíš na miesto, ktoré úplne volá po triede lebo vieš že ako trieda to bude univerzálnejšie, nespôsobí ti to redundanciu kodu lebo to budeš musieť volať aj neskôr a podobne, tak to sprav ako objekt. Je častá chyba, že programátor sa snaží všetko robiť objektovo a potom ich vnáša aj tam, kde sú kontrakproduktívne (typický príklad si uviedol vo svojej triede page). Kým si tieto veci neuvedomíš, stále budeš na tom mrtvom bode. OOP je metoda programovania, a niektorí radi dokonca hovoria že ide o filozofiu. Takže rovnako ako ti nikto nepovie ako máš žiť ti nikto nepovie ako programovať. Syntax a teoriu ovládaš, ako to využiješ je tvoja vec. Ak aj nájdeš návod na nejaký web, a bude sa ti zdať super, časom zistíš že je oničom
vvoody
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 29 máj 2011, 17:45

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa vvoody »

hero: píšeš že si čítal o frameworkoch, napríklad aký? Lebo práve frameworky sú z drvivej väčšiny založené na princípoch MVC a snáď v každom start guide by malo byť na začiatku vysvetlený princíp MVC, sa pýtam len či náhodou pod frameworkom nerozumieš niečo iné. Frameworky su napríklad Zend, CakePHP alebo český Nette, skús si o nich na nete dačo prečítať a porobiť tutoriály a demo aplikácie ktoré sú k nim pribalené.
ropman
Medium Professional
Medium Professional
Príspevky: 1250
Registrovaný: 12 apr 2010, 21:07

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa ropman »

ked chces mat kod aspon trochu na urovni musis pouzivat framework... bez toho to ide tazko... pre php je celkom dobry CakePHP ako bolo spomenute, takze ten by som asi odporucal. ale priprav sa na to ze tie frameworky su pomerne zlozite asi vsetky
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa *****HERO***** »

tak nemyslel som nejaky navod, podla ktoreho teraz budem robit vsetky weby, ale aspon nejaku ukazku navrhu konkretneho webu, od ktorej by som sa mohol odpichnut a pochopit na nej ako to funguje, lebo si to absolutne neviem predstavit. ale asi mas pravdu, zatial velke weby nekodim, takze by to bolo asi zbytocne.

frameworky som zatial neskusal ziadne, iba tak orientacne cital, co to vlastne je. skusal som jedine templejtovaci engine Smarty, kde sa mi paci, ze vlastne ten PHP kod oddelim od HTML kodu a tym padom sa to lahsie spravuje, ale to by som ako framework nenazval. poskusam tie frameworky, nech viem aspon ako to funguje a potom uvidim co dalej.
sorien
Medium Expert
Medium Expert
Príspevky: 88
Registrovaný: 02 jún 2011, 21:55

Re: tvorba objektovo orientovanych webov PHP

Príspevok od používateľa sorien »

inak ked uz v sucasnosti zacinat s niakym frameworkom doporucujem Symfony2, aj ked je to len beta, maju dost dobru dokumentaciu v ktorej je aj nazorne ukazane ako sa dostanes z hlasickeho html+php k dizajnu aplikacii cez mvc

Kód: Vybrať všetko

http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html
zaciatky budu hodne tazke, hlavne pre novacika, ale tak ak to zvladnes mas v tejto oblasti vyhrate.
Napísať odpoveď