Autor Zpráva
jerry
Profil *
Zdravím,
chci Vás požádat o radu.

Začínám s OOP v PHP5 a řekl jsem si, že pomocí OOP vytvořím nějaké administrační rozhraní pro např. přidávání a editaci zaměstanců a majetku ve firmě. Problém je v tom, že nevím (no spíš hledám řešení), jak takovou aplikace dobře rozvrhnout.
Počítám s tím, že vytvořím třídu Zamestanec (ma na starost zobrazeni formulare pro pridavani zamestrance, pridani zamest. a editaci zamestnance), podobne by mela fungovat třída Majetek.

Zajímá mě, jak by se dalo vyřešit, aby mi aplikace, podle toho co přichází z GETu nebo POSTu volala metody a vytvářela konkrétní objekt.

Mám vytvářit novou třídu, který se bude starat o požadavky z GET a POST? (a jak by měla vypadat??????). Nenavrhnul by mi někdo, jak mám začít?????

Díky všem
Joker
Profil
jerry
To je takhle celkem těžké říct, když neznáme přesné zadání.

Proto se nejdřív dělá funkční analýza: Jak se bude systém používat, s kým/čím bude muset komunikovat (nebo kdo/co s ním) a v jakých rolích. Následně jaké procesy tam mají probíhat a kdo se jich účastní.
Samozřejmě to nemá cenu dělat pro nějaký jednoduchý příklad, nicméně v závislosti na tom co si představujete že by to mělo dělat z toho může vyjít cokoliv od jedné jednoduché třídy po SAP :o)))
Mastodont
Profil
To je opravdu velmi vágní zadání. Nicméně by bylo dobře začít tím, že mezi GET a POST jsou zásadní rozdíly, které IMHO nevedou k jedné třídě pro oba typy požadavků. POST je spojen s formuláři - formuláře obecně odesílají na server sadu dat - osobně dávám u formů přednost třídě pro obsluhu formuláře před nějakými předmětovými třídami typu Zaměstnanec nebo Majetek.
suky
Profil
jerry
Podle me je blbost zacinat se ucit objektove programovat na navrhove tridy, obsluhujici POST a GET (takovych uz tady prece je...). Zeptam se takhle, co je tvuj hlavni cil zacit s OOP?
jerry
Profil *
Zdravím,
představte si klasickou administraci např. nějaké e-shopu. A tuto administraci bych přepsal pomocí OOP.
Nevím však, jak zpracovávat požadavky z GETu. Např. budou tam odkazy Přidej nový, Edituj existující....atd.

A z odkazu mi přijde např. index.php?action=add-item


A zajímalo by mě, jak něco takové přepsat pomocí OOP....měla by existovat nějaká třída, která šefuje GET požadavkům????

A jak by vypadala?????

class GET {

switch($_GET){
case "add-item": new Item

}


nebo napadá někoho, jak to celé postavit??????

Můj hlavní cíl psát aplikace pomocí OOP...a také myslet v OOP.


díky všem za radu
}
AM_
Profil
Můj hlavní cíl psát aplikace pomocí OOP...a také myslet v OOP.
Jsou chvíle, kdy použití OOP není na místě, nebo alespoň není na místě cpát každou blbost do objektu. Když můžeš v programu napsat
if (@$_GET['action'] == 'add-item')
,
na co potřebuješ objekt?
Joker
Profil
jerry
Nestrukturoval bych to jako třídu obsluhující všechny požadavky GET, třídu obsluhující všechny požadavky POST, apod. Spíš podle logických objektů a procesů v systému.

Takový jednoduchý nástřel na "objektové" přidání položky:

index:
...
if(!empty($_GET["action"])){
  $ctl = new ActionController();
  $ctl->addItem();
}
...

třída ActionController:
public function addItem(){
  $item = new Item($_GET["item_category"], $_GET["item_description"]); // nějaká data v položce
  $this->datamodel->addItem($item);
}

...třída Item by byla reprezentace položky a metoda Datamodel::addItem by se starala o uložení do databáze.

Samozřejmě je to dost zjednodušený příklad, ale nějak takhle bych asi postupoval.
Mastodont
Profil
Joker
$_GET je superglobální pole, s ním se dá pracovat přímo a ne zavádět kvůli tomu Item třídu ... ActionController - proč ne, to je běžná záležitost.

A $_POST by IMHO měl být zpracován zcela odděleně od ostatní vstupní logiky, tam je extra třída také dobrá.
Jan Tvrdík
Profil
Další možností je použít nějaký rozumný framework (např. Nette nebo Zend), který nám vše usnadní.
suky
Profil
Jan Tvrdík
který nám vše usnadní
Přesně tak, ale začátečníkovi, který hledá způsob jak pomocí OOP řešit požadavky z GET a POST, je složité vysvětlovat, jak framework úspěšně využít.

jerry
Dovolil bych si tě odkázat na můj článek, který popisuje přístup k tvorbě PHP projektu. Dále ti dám radu, pokud chceš účelně a správně používat OOP, nejprve se ho nauč a pochop jeho princip, pokoukni po PHP frameworcích, některý si zvol, nauč se jeho základy a pak teprve začni psát objektové PHP projekty. Psát návrhové třídy od nuly je opravdu zbytečné. Pokud tvé projekty OOP vyžadovat nebudou, vystačíš si se strukturálním přístupem. OOP není cíl, ale prostředek, díky kterému dosáhneš cíle.
srigi
Profil
Ak kces spravne vyuzivat OOP v PHP, nastuduj si technologiu MVC.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: