Hallo,
ich scheitere bei folgendem Problem und scheitere leider auch bei der Google-Suche, da ich nicht genau weiß, wie ich das Problem benennen soll...
Sagen wir, ich habe eine Objekt-Property $obj->p1->p2->p3 und ich habe ein Array $arr = array( 'p1', 'p2', 'p3 ). Wie kann ich es nun so zusammenbasteln, dass ich die entsprechende Property ansprechen kann?
Beispiel:
function getProperty( $obj, $arr ) {
//hier kommt der Code, den ich suche
return $obj_prop;
}
Aufruf so: $wert = getProperty( $obj, array( 'p1', 'p2', 'p3') );
Zurückgegeben werden soll eben der Inhalt von $obj->p1->p2->p3.
Besonderheit: ich weiß nicht(!) vorher, was in $arr enthalten ist, es kann also auch array( 'p1', 'p2' ) sein.
Weiß jemand Rat?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Objekt-Property über Array ansprechen
Einklappen
Neue Werbung 2019
Einklappen
X
-
Objekt-Property über Array ansprechen
Stichworte: -
-
Ist das wirklich schon die eleganteste Methode, dieses Problem zu lösen?
Falls jemand noch Vorschläge hat, immer gern her damit.
-
Ja, so habe ich das bisher auch gelöst:
PHP-Code:function getPropertyValue( $obj, $property ) {
foreach( $property as $p ) {
$obj = $obj->{$p};
}
return $obj;
}
$obj->p1->p2->p3 = 'testwert';
$property = array( 'p1', 'p2', 'p3' );
$val = getPropertyValue( $obj, $property ); // = 'testwert'
Sorry für die etwas doof gestellte Frage, aber ich habe immer meine Schwierigkeiten, PHP-Code und Anforderungen zu verbalisieren.
Einen Kommentar schreiben:
-
Oder suchst du das?
PHP-Code://Test-objekt
$obj->p1->p2->p3 = "obj123";
$objPath = array( 'p1', 'p2', 'p3' );
$result = clone($obj);
foreach($objPath as $k) {
$result = $result->{$k};
}
echo $result; //obj123
Einen Kommentar schreiben:
-
Zurückgegeben werden soll eben der Inhalt von $obj->p1->p2->p3
PHP-Code:function getProperty($obj, array $propertiesToGet){
foreach ($propertiesToGet as $property){
if(property_exists(get_class($obj), $property)){
}
}
}
Einen Kommentar schreiben:
Einen Kommentar schreiben: