PHP - Rozčelenení tříd – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP - Rozčelenení tříd – PHP – Fórum – Programujte.comPHP - Rozčelenení tříd – PHP – Fórum – Programujte.com

 

Blah
~ Anonymní uživatel
4 příspěvky
29. 9. 2015   #1
-
0
-

Heya hou,

píšu si redakční systém v OOP. Můj csm má struturu, že pro každou třídů využívám samostatný soubor (na MVC nijak zásadně zřetel neberu.). Zatím jsem nenarazil na žádný problém, ale protože se můj systém rozrůstá, tak zároveň i komplikuje (k tomu přispívá i OOP).

MainAPI.php     - Logika. ..

DBHandler.php - Zprostředkání mysqli připojení a query

HeadPage.php - Html hlavička

BodyPage.php - html

Řeším tedy problém propojení tříd, které jsou na sobě částečně závislé, tedy že určitá třída čerpá z jiné třídy nějaká data.

Konkrétně třídu DBHandler bych měl využívat ve všech třídách (respektive v elemntech stránky Hlavička - title z Db, Body - třeba novinky).

Problém tedy, je v tom že metody z DBHandler bych neměl volat staticky, což mě tady už bylo rozmluveno.

Je tedy v pořádku skoro do každé třídy vkládat třídu DBHandler, a vytvářet v ní instanci přes kterou bych mohl využívat metody?

Nepřipad mě to jako nejlepší řešení, a pak opět třídu vkládat do indexu, spolu s ostatníma třídama.

Nahlásit jako SPAM
IP: 212.96.160.–
Kit+15
Guru
29. 9. 2015   #2
-
+1
-
Zajímavé

#1 Blah
Nejelegantnější je nejprve vytvořit instanci třídy DBHandler a tu vložit jako parametr konstruktoru další třídy. Říká se tomu Dependency Injection. Ve tvém případě by to mohlo vypadat asi takhle: 

$dbh = new DBHandler(...);
$api = new MainAPI($dbh);
$data = $api->execute();   // to je jen příklad, vytvoří objekt $data
$head = new HeadPage($dbh, $data);  // injekce databáze a dat
echo $head;       // předpokládám existenci magické metody __toString()
$body = new BodyPage($dbh, $data);
echo $body;

V konstruktorech si ty parametry ($dbh a $data) uložíš a pak s nimi pracuješ jako s lokálními objekty.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JacobCZ0
Newbie
29. 9. 2015   #3
-
0
-

Ahoj, plně souhlasím s Kitovou odpovědí, I když si myslím, že na statickém volání metody není nic špatného, pokud se to s ním nepřehání. Co bych ti však silně doporučil je, přejít na MVC, ušetří ti to hodiny práce a spoustu bolestí hlavy. Když to ještě spojíš s nějakým frameworkem (osobně můžu doporučit Laravel, případně Nette, pokud nejsi fandou Laravelovských statických metod), bude to úplně ideální a bude se ti pracovat mnohem lépe.

Nahlásit jako SPAM
IP: 37.188.139.–
Kit+15
Guru
29. 9. 2015   #4
-
+1
-
Zajímavé

#3 JacobCZ
Nemyslím si, že je zrovna ideální tlačit začátečníka do frameworků. Jen ať se pořádně otrká v čistém PHP, možná ani žádný framework potřebovat nebude.

Ty laravelovské statické metody jsou vlastně továrnami na objekty. Vlastně jen suplují přetěžování konstruktoru, které v PHP chybí (mně samozřejmě ne, ale to je jiná kapitola).

Pokud chceš používat Nette, je dobré si ten jeho zdroják alespoň přečíst. Je poměrně zajímavý.

MVC používám a nemohu si ho vynachválit. Není však architekturou, která by se hodila úplně na všechno. Například AJAX tu architekturu mírně narušuje (nebo spíš rozšiřuje o další komponentu), ale nevadí to.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
JacobCZ0
Newbie
29. 9. 2015   #5
-
+1
-
Zajímavé
Kit +

#4 Kit
Nějak jsem si neuvědomil, že je to začátečník. V tom případě je fajn si takhle něco napsat bez frameworku, sám jsem se tak učil... No ale to MVC by se naučit měl, o tom žádná   ...

Nahlásit jako SPAM
IP: 37.188.139.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 42 hostů

Podobná vlákna

šablony u tříd — založil Kuge

Komunikace Tříd — založil Guga

Více tříd — založil RePRO

Tvorba tříd a objektů — založil Tomas

Qt dědičnost tříd widgetů — založil apachenda

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý