php verschachtelte objekte dynamisch aufrufen
Geizhals » Forum » Programmierung » php verschachtelte objekte dynamisch aufrufen (5 Beiträge, 107 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
php verschachtelte objekte dynamisch aufrufen
31.10.2007, 17:02:39
steh grad ein bischen auf der leitung ...

ich erzeuge aus einer datenbank klassen, deren objekte wiederum objekte anderer klassen referenzieren.
da es fuer meine derzeitigen anforderungen am einfachsten ist, erzeuge ich fuer jede referenz ein neues objekt in der klasse. beispiel klasse Ereignis referenziert die klasse Ereignisart.
dafuer erzeuge ich in der klasse Eregnis ein objekt vom typ Ereignisart das ich mit den entsprechenden daten befuelle.

z.B.
$Ereignis->ref_Ereignisart->Name
$Ereignis->Number

das funktioniert auch sehr gut und ist genau die art wie ich es brauche. nur wenn ich das dynamisch loesen will, kommt das feld "ref_Ereignisart" aus einer Variable.

das wuerde dann so aussehen:
$FilterClass = new Ereignis();
$FieldName = 'ref_Ereignisart->Name';
echo $FilterClass->$FieldName;

das klappt leider nur solange $FieldName kein objekt ist. wobei der direkte aufruf funktioniert!
hier:
echo $FilterClass->ref_Ereignisart->Name;


denn... das funktioniert wunderbar:
$FilterClass = new Ereignis();
$FieldName = 'Number';
echo $FilterClass->$FieldName;


hier mal ein codeschnipsel mit beispieldaten zum testen...falls wer lust hat.
class Ereignisart {

var $ID;
var $Name;

function Ereignisart() {
$this->ID = '0605fc';
$this->Name = 'Umzug';
}
}

class Ereignis {

var $ID;
var $Number;
var $ref_Ereignisart;

var $Ereignisart;

function Ereignis(){
$this->ID = '0700ab';
$this->Number = 'E-00001';
$this->CreateObjects();
}

function CreateObjects() {
$this->ref_Ereignisart = new Ereignisart();
}
}

$FilterClass = new Ereignis();

//**funktioniert nicht
//$FieldName = 'ref_Ereignisart->Name';
//echo $FilterClass->$FieldName;

//**funktioniert
//echo $FilterClass->ref_Ereignisart->Name;

//**aber ... funktioniert
//$FieldName = 'Number';
//echo $FilterClass->$FieldName;
?>



Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung