Autor | Zpráva | ||
---|---|---|---|
radeson Profil |
#1 · Zasláno: 27. 3. 2008, 18:23:23
ahoj,
potřeboval bych poradit, jak se dělá, že když mám v nějaké metodě dotaz na databázi, aby se z výsledeku vytvořily parametry objektu. Něco jako fetch_object() ale abych mohl vytvořit instanci objektu a volat jeho parametry, které by byli záznamem z db. Malý příklad: <?php class Objekt{ function __construct(){ # nejaky ten mysqli->query() } } $obj = new Objekt(); echo $obj->nazev_z_db; # toto by byl parametr ktery by se priradil z mysql jak to udelat? |
||
radeson Profil |
#2 · Zasláno: 27. 3. 2008, 23:21:25
už mě něco napadlo, využil jsem metody __get. Napsal jsem tohle:
<?php class Objekt{ const HOST = "localhost"; const USER = "user"; const PASS = "pass"; const DB = "galerie"; function __construct(){ $this->mysqli = new mysqli(self::HOST, self::USER, self::PASS, self::DB); } function ziskatData(){ $this->dotaz = $this->mysqli->query("SELECT nazev FROM gal_sekce"); } function spocitatRadky(){ $pocet = $this->dotaz->num_rows; return $pocet; } function __get($parametr){ $zaznam = $this->dotaz->fetch_array(); return $zaznam[$parametr]; } } $obj = new Objekt(); $obj->ziskatData(); $pocet_radku = $obj->spocitatRadky(); for ($i = 1; $i <= $pocet_radku; ++$i){ print $obj->nazev."<br />\n"; } ?> co myslíte? je to dobrý? je vhodné to použít v aplikacích? |
||
bukaj Profil |
#3 · Zasláno: 27. 3. 2008, 23:37:46
radeson
Je to lepší než volat fce pro práci s databází rovnou, ale, že by zrovna tohle řešení bylo nějaké "extrovní" (spíše reálně použitelné), to ne. Pokud se zajímáš o tahání dat z databáze, doporučuji podívat se, jak to mají řešené jinde, např. v každém větším, ne doma na koleni dělaném, frameworku (Zend, CakePHP...), databázovém layeru (dibi) a samozřejmě taky navštívit dokumentaci PDO. Dále hledej návrhové vzory jako Driver (k odstítnění implementace jednotlivých databází), Domain-object (a s ním spojený termín ORM (Object Relation Maping)) a ActiveRecord (v podstatě spojení přechozích do jednoho celku; svými ActiveRecord fičurami je proslaven framework Ruby on Rails). |
||
Mastodont Profil |
#4 · Zasláno: 28. 3. 2008, 07:55:59 · Upravil/a: Mastodont
radeson
Objektových vrstev pro práci s databází je spousta a většinou jde o modifikaci Active Record nebo (Table, Row) Gateway. Čím víc toho o nich vím, tím jsem skeptičtější ... bukaj návrhové vzory jako Driver (k odstítnění implementace jednotlivých databází) Jejda, on už je kód if ($config['dbtype'] == 'Postgre') include '.../model_postgre.php'; elseif ... návrhovým vzorem? :-))) |
||
bukaj Profil |
#5 · Zasláno: 28. 3. 2008, 16:31:08 · Upravil/a: bukaj
Mastodont
Jejda, on už je kód ... návrhovým vzorem? :-))) Jak se říká ve většině úvodů k návrhovým vzorům, U některých návrhových vzorů dojdeme k tomu, že je používáme, aniž bychom řešení návrhovým vzorem nazývali ;) Aneb je jednodušší říct, na to bys mohl použít tenhle návrhový vzor, než vysvětlovat tohle udělej takhle, tohle takhle, tamto zase takhle. |
||
Časová prodleva: 18 let
|
0