Autor | Zpráva | ||
---|---|---|---|
Spacebar Profil |
#1 · Zasláno: 18. 4. 2010, 12:37:26
Zdravím.
Zkouším tvořit web v OOP, ale chci se vyhnout vícenásobné dědičnosti. Mělo by to být nějak takto: • root - pracuj.php • tridy - vzhled.class.php (funkce generuj() ) - databaze.class.php (funkce pripoj() ) No. A teď v tom souboru pracuj.php bude nějaký kód, který bude tvořit nějaké akce s těmi třídami. Bez problému. Ale co když potřebuji ve třídě vzhled používat třídu ke komunikaci s databází? Mám si udělat nějaký soubor, ve kterém budu mít inicializované objekty všech těch tříd, pak si ho includovat? ( nejakysoubor.php ) include "vzhled.class.php"; include "databaze.class.php"; $vzhled = new vzhled(); $db = new databaze(); Doufám, že jsem to vysvětlil aspoň aby to někdo pochopil :( |
||
radvis Profil * |
#2 · Zasláno: 18. 4. 2010, 12:49:10
vzhled.class.php ->
var $mysql; function __construct() { $this->mysql = new darabaze(); } Tak to budeš mít v každé třídě a pak kdyz chces neco vytáhnout z db: $query = $this->mysql->queryObject("SELECT * FROM ".$this->obrazek." LIMIT 5 "); Snat tomu nějak porozumíš. |
||
Chazzy Profil * |
#3 · Zasláno: 18. 4. 2010, 12:54:05
No pokud nejseš nijak zběhlej v návrhu aplikací, tak si zkus udělat jen třídu, třeba Application, v ní si nahraj všechny soubory co potřebuješ a v konstruktoru si vytvoř instance.
<?php require_once "vzhled.class.php"; require_once "databaze.class.php"; class Application { public $db; public $vzhled; function __construct() { $this->db = new databaze(); $this->vzhled = new vzhled(); } //další kód } všechny další funkční třídy od této třídy odvoď a budeš v nich pak pouze používat <?php class Neco extends Application { public function nejakaMetoda() { $this->db->neco(); } } |
||
Nox Profil |
#4 · Zasláno: 18. 4. 2010, 12:54:21 · Upravil/a: Nox
radvis:
Nepřijde mi dobrý nápad vytvářet v každém objektu nový mysql objekt pokud není potřeba zpracovávat více připojení nebo různými způspoby Postup bude podobný co psal radvis, ale nepoužije se new databaze(), ale do proměnné se přiřadí už existující objekt zvenčí http://www.potstuck.com/2009/01/08/php-dependency-injection/ |
||
Alphard Profil |
#5 · Zasláno: 18. 4. 2010, 12:58:34
[#2] radvis
Kombinace var a __constuct? Funguje to, ale radši bych zůstal v PHP 5 a nemíchal verze. Spacebar: „Ale co když potřebuji ve třídě vzhled používat třídu ke komunikaci s databází?“ Ve třídě vzhled nemáte komunikovat s databází. S ní komunikuje model, ten předává data a vzhled se stará o vzhled. Vyhledejte si něco o MCV. |
||
radvis Profil * |
#6 · Zasláno: 18. 4. 2010, 13:14:03
Tak private a né var.
|
||
SpotRudloff Profil |
#7 · Zasláno: 18. 4. 2010, 14:39:54
radvis:
A nebo public. |
||
Spacebar Profil |
#8 · Zasláno: 19. 4. 2010, 17:45:09
Nakonec jsem to vyřešil předáním.
class vzhled { var $db; function __construct($dbClObject) { $this->db = $dbClObject; } } Díky všem! |
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0