Autor Zpráva
souki
Profil
Občas vidím v projektech, že se pro přístup k databázi používá třída. Má to nějaký význam? Jediné co mě napadá je logování dotazů nebo práce s více databázemi...
Hugo
Profil
Ma to ty same vyhody jako OOP jinde.
souki
Profil
Hugo
Takže například?
roberta
Profil
nuž triedy sa používajú ako "definícia" objektu v objektovo orientovanom programovaní (OOP). je to úplne iná filozofia programovania, ako procedurálne programovanie... takže si trochy preštuduj základy OOP a možno zistíš na čo sú tie triedy dobré.

přístup k databázi používá třída
tak to mali zrejme na mysli, že na prístup (connect) k DB je naprogramaná trieda, ktorá to v sebe urobí a keď je tá trieda naprogramovaná dobre, tak je napr. jedno do akej databázy sa pripojuješ (MySQL, MS SQL, Oracle, ...)
v kóde iba vytvoríš inštanciu tej triedy - objekt a potom zavoláš metódu objektu na prístup (jeden "príkaz") a ten objekt sám vie, že do ktorej DB sa má pripojiť. a ty už v samotnom kóde nemusíš riešiť na akú DB sa pripojuješ, aký má connestion string, atď... proste iba zavoláš tú metódu a o zvyšok sa nemusíš starať...
souki
Profil
jen mě zajímalo jestli to má třeba nějaké bezpečnostní výhody... já momentálně používám přístup přes objekt k logování nápadných příkazů....
Hugo
Profil
souki

Bezepcne to muze byt i proceduralne, stejne jako muze byt OOP kod nebezpecny. Vzdy zalezi na tom jak to napises.

Info o vyhodach oop mas napr. tady
http://en.wikipedia.org/wiki/Object-oriented_programming
krteczek
Profil
můj názor je že OOP v php nemá moc význam, pokud se jedná o projekty s vysokou denní návštěvností, je lepší napsat aplikaci s ohledem na výkon, pokud používáte mysql nepotřebujete při každém dotazu ověřovat jaká je to vlastně databáze, jaká je to verze php, jak je nastavene a milion dalších věcí.

prostě v projektu použít nějakou obecnou třídu s milionem funkcí nemusí být to pravé ořechové.

extrémní případ jsou některé free cvs, obchody, kdy to nahrajete na jakýkoliv hosting a ono to jede téměř bez zásahu, pokud je 100 lidi za den není co řešit, může být nasazeno skoro všechno, ale pokud počitáte se stovkami lidí online OOP aplikace moc nebrat

Nicméně vím, že jou projekty, které musí být naprogramovány objektově, protože nejsou stavěné jen pro jeden konkrétní projekt, přikladem může být Texy!
krteczek
souki
Profil
nejde mi ani tak o výhody OOP.... To používám jen když je to očividně výhodněiší (a moc často to tak očividné není)
šlo mi o důvod přístupu k databázi přes objekt....
už si s tím, ale od rána hraju a zjištuji, že to má výhody. Každý dotaz jde profiltrovat, podezřelé uložit nebo vůbec neprovádět a podobně...
Horší je to, ale s přístupem k DB ve funkcích.... na to si budu muset zopakovat globálnost a pod...
Hugo
Profil
krteczek

To co jsi napsal je mirne zmatene. Zaver, ze nema cenu pouzivat OOP v PHP kvuli tomu, ze nektere volne dostupne tridy jsou narocne na vykon je opravdu zvlastni. Stejne tak se da argumentovat proti proceduralnimu programovani.
Hugo
Profil
souki

Pokud chces vedet vyhody, tak sem musis tu tridu, kterou pouzivas dat. Jinak ti nikdo nerekne nic jineho nez obecne veci.
souki
Profil
Hugo
zatím takřka žádnou... začínám nový projekt a chtěl bych, aby bylo všechko jak se patří... Tak mě zajímalo, jestli je přístup přes objek jen výmysl free cms u kterých jsem to viděl nebo se to opravdu používá.....
Vidím, že je to jako vždycky různé.... Když nic jinýho tak to vypadá líp, když je v kódu $db->query místo suchého mysql_query =)
Hugo
Profil
To nejde rict obecne, pokud mas cely kod psany objektove, tak je samozrejme vhodne mit i pristup k db pomoci objektu. Jinak se musis rozhodnout sam. Ja pouzivam v php5 uz prakticky jen OOP, protoze to je (pro me) vyhodnejsi, ale pokud chces udelat jen malou aplikaci a s oop nemas moc zkusenosti, tak je imho lepsi to napsat proceduralne.
souki
Profil
Hugo
takže objektově... dík ;)
mila
Profil
Horší je to, ale s přístupem k DB ve funkcích.... na to si budu muset zopakovat globálnost a pod...

Pokud budu mít třídu pro práci s db, udělám ji statickou. Tzn. budu volat db::query ('...'), takže nemusím v každé fci psát $db = new db; nebo global $db;

V php 5 je to sranda, v php 4 je třeba ohackovat neexistenci statických proměných (třídy)...
Hugo
Profil
mila

PHP4 a OOP je velmi smutny pribeh :-). (bohuzel)
krteczek
Profil
Hugo: byla to vice méně reakce na roberta který zminoval také právě tyto OBECNÉ třídy, Je jasné že pokud napíšeme něco (třída/funkce) na přesně určený účel bude to imho pracovat lépe a rychleji než obecný kod na všechno.
a já mám rád malé jednoduché jednoúčelové automaty ;-)
krteczek
Hugo
Profil
krteczek

Ach so, ...
mila
Profil
Zrovna něco programuju, musím říci, že když si člověk zvykne, tak to docela jde:

Nemožnost definovat public, protected, ... - to je jen pro programátora. Když se napíšu si k fci, že je private, tak ji prostě nevolám.
Neexistence statických proměných - mám fci, která vrací referenci na proměnou, která je uvnitř ní definována jako statická.
Kopírovájí objektu při přiřazení - jen napíšu pár & navíc.
Třídy nemají konstatny - mám fci, která vrací konstantní hodnotu.
atd...

Psaní OOP není o jazyku a prostředcích, ale o myšlení.
Co mi v php4 opravdu chybí, jsou exceptions. Jde to bez nich, ale kód je plný testů, zda nebyla nějaká chyba..
roberta
Profil
inak v diskusii o PHP sa mi zdá trochu zmätočné diskutovať o OOP, pretože programovanie technológiou PHP nie je (a podľa môjho skromného názoru ani v dohľadnej dobe nebude) objektovo orientované...
souki
Profil
roberta
co naděláme.... at budeme mít sebelepší jazykové prostředky, všechno v php musí končit instrukcí echo
Toto téma je uzamčeno. Odpověď nelze zaslat.