Autor Zpráva
matak
Profil
získávám data z dtb pomocí fetch_object, získám tak objekt a potřebuji aby tyto data nacetl nove vytvareny objekt

asi tak $z = mysql_fetch_object

$obj = new Objekt();

potrebuji aby objekt $obj nacetl data z proměnné $z

jak toto resite?

Konkretne toto nebo podobny priklad??
Anonymní
Profil *
$obj = new Objekt($z); - Je to takový problém? V konstruktoru si pak ta data můžeš uložit.
matak
Profil
jo to je mi jasne, ale prave v konstruktoru musim provadet to ulozeni nejdradeji bych automaticky, mam tady databazi ktera ma jako vysledek treba 25 sloupcu

takze provadet

$this->IDsloupec = $z->IDsloupec
a to cele 25x se mi nelibi proto se ptam jestli to nelze udelat jinak nebo jak vlastne pristupujete v objektech k tomuto problemu?
matak
Profil
našel jsem řešení které asi použiji, ptám se na názor??


This method offers a nice way to fetch objects from databases. As Federico at Pomi dot net mentioned it doesn't work native as the type of the object fetched isn't the right one, but with a small typecast it works flawlessly.

<?php
function ClassTypeCast(&$obj,$class_type){
if(class_exists($class_type)){
$obj = unserialize(preg_replace("/^O:[0-9]+:\\"[^\"]+\\":/i",
"O:".strlen($class_type).":\\"".$class_type."\\":", serialize($obj)));
}
}

class Foo
{
var $foo;
var $bar;
function get_from_db()
{
mysql_connect();
mysql_select_db();
$res = mysql_query("SELECT foo,bar from my_table");

$fetched_object = mysql_fetch_object($res);
ClassTypeCast($fetched_object,"Foo");
$this = $fetched_object;
}
}
?>
Anonymní
Profil *
Pokud to funguje, tak to použij;)

Jinak je také tato možnost - Do pole si načti členské proměnné pomocí get_class_vars(), pole projdi cyklem a pomocí $this->{$klic} = $hodnota ulož.
matak
Profil
jj tve reseni uz me napadlo taky a funguje to, poupravil sem to sice tak ze z vysledku dtb registruje jen promenne co jsou defaultne zadany ve tride presne jak si psal pomoci get_class_vars, sice nevim jestli je dobry napad aby to plnilo i private promenne nejak nemam jeste rozmyslene, ale spis me zajimalo jak to resi ostatni chtel bych pouzit to nejlepsi reseni a ne nejaky bastl ktery bude zbytecne dost narocny na zelezo
matak
Profil
no celý postup měl pár chyb, takže jsem prozatím zvolil naprosto jednodušší řešení pomocí foreach jsem prošel objekt z databáze v kostruktoru dané třídy a registroval vše co dtb poslala, asi to není uplně správné, ale zatím to plní svůj účel
tony
Profil *
Ereg("^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$", $email)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0