Ankündigung

Einklappen
Keine Ankündigung bisher.

Objekt-Property über Array ansprechen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • coldauthor
    hat ein Thema erstellt Objekt-Property über Array ansprechen.

    Objekt-Property über Array ansprechen

    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?

  • coldauthor
    antwortet
    Ist das wirklich schon die eleganteste Methode, dieses Problem zu lösen?

    Falls jemand noch Vorschläge hat, immer gern her damit.

    Einen Kommentar schreiben:


  • coldauthor
    antwortet
    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' 
    Ich dachte nur, da gibt es evtl. eine schnellere und elegantere Lösung.

    Sorry für die etwas doof gestellte Frage, aber ich habe immer meine Schwierigkeiten, PHP-Code und Anforderungen zu verbalisieren.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    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:


  • VPh
    antwortet
    Zurückgegeben werden soll eben der Inhalt von $obj->p1->p2->p3
    Keine Ahnung was du damit meinst. Und willst du denn einzelne Werte zurückgeben, oder alle properties die du auch per Array übergibst?
    PHP-Code:
    function getProperty($obj, array $propertiesToGet){
        foreach (
    $propertiesToGet as $property){
            if(
    property_exists(get_class($obj), $property)){
                
            }
        }

    Einen Kommentar schreiben:

Lädt...
X