Mike: get_object_vars oder (array)var Unterschied object2array

Hallo,

ich möchte ein mehrdimensionales Objekt in ein Array umwandeln. Funktioniert auch soweit, doch es bieten sich zwei Methoden dazu an und so wüsste ich gerne mal den Unterschied bzw. welche sinnvoller ist:

  
// Hier mit $ar = (array)$obj;  
if(is_object($obj)){$ar = (array)$obj;}else{$ar = $obj;} 
  
// Und hier mit $ar = get_object_vars($obj);  
if(is_object($obj)){$ar = get_object_vars($obj);else{$ar = $obj;} 

Gruss
Mike

  1. Moin

    Dazu sei dir die offizielle Doku und die entsprechenden Kommentare ans Herz gelegt. Speziell dieser hier: http://www.php.net/manual/en/function.get-object-vars.php#47075

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ## Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. Hallo,

      Dazu sei dir die offizielle Doku und die entsprechenden Kommentare ans Herz gelegt. Speziell dieser hier: http://www.php.net/manual/en/function.get-object-vars.php#47075

      Das hilft mir soviel weiter wie: ἓν οἶδα ὅτι οὐδὲν οἶδα

      Wenn jemand den PHP.net-Kommentar ein wenig vereinfacht und möglichst auf deutsch erklären würde, wäre es vielleicht hilfreich.

      Gruss
      Mike

      1. Moin

        Das hilft mir soviel weiter wie: ἓν οἶδα ὅτι οὐδὲν οἶδα

        Aha, du weißt, dass du nichts weißt... gut

        Wenn jemand den PHP.net-Kommentar ein wenig vereinfacht und möglichst auf deutsch erklären würde, wäre es vielleicht hilfreich.

        Der Unterschied zwischen einem einfachen Castzen $arr=(array)$obj und dem auslesen per $arr=get_object_vars( $obj ) besteht in dem Umgang mit der Datenkapselung.

        Beim Casten sind auch Daten sichtbar die evtl protected oder private sind. bei der Verwendung der genannten PHP-Funktion werden nur Daten aus dem Object herausgefiltert, die auch anzeigbar sind (also dem entsprechenden Sichtbarkeitsbereich entsprechen)

        Nun ist es an dir zu entscheiden was du benötigst. Wenn es eine bloße aneinanderreoihung von Objectdaten (alle public) ist, dann reicht m.E. das einfache Casten aus.

        Ob es noch weitere Unterschiede gibt, kann ich gerade nicht beantworten.

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Tag,

          Das hilft mir soviel weiter wie: ἓν οἶδα ὅτι οὐδὲν οἶδα

          Aha, du weißt, dass du nichts weißt... gut

          Eigentlich sollte er ja nicht _nichts wissen_  sondern _nicht wissen_. Verstehste?

          Einer der großen Übersetzungsfehler, ja ja.

          1. Moin

            Tag,

            Das hilft mir soviel weiter wie: ἓν οἶδα ὅτι οὐδὲν οἶδα

            Aha, du weißt, dass du nichts weißt... gut

            Eigentlich sollte er ja nicht _nichts wissen_  sondern _nicht wissen_. Verstehste?

            Einer der großen Übersetzungsfehler, ja ja.

            Naja... google sagte: "In diesem, ich weiß, dass ich nichts weiß" ... Da hatte ich mir das so zusammengereimt... ;) Ich bin des griechischen nicht wirklich mächtig...

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ## Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
            1. Tag,

              Naja... google sagte: "In diesem, ich weiß, dass ich nichts weiß" ... Da hatte ich mir das so zusammengereimt... ;) Ich bin des griechischen nicht wirklich mächtig...

              na, ja, was google so alles übersetzt :)
              Hier, ein Link: http://de.wikipedia.org/wiki/Ich_weiß,_dass_ich_nichts_weiß

              Wenn wir schon bei fatalen Übersetzungsfehlern sind:

              Warum trennt man Eidechse EI-DECHSE und nicht EID-ECHSE?

              Tja, auch hier wurde geschlampt. Und aus der laufenden Schlange (mhd. egedehse) sind dann auch noch die "Echsen" entstanden! Somit ist die Trennen EI-DECHSE völlig richtig und die Abtrennung Echse falsch. Echsen müssten eigentlich Dechsen heissen. Na ja, kann man nichts machen. So, genug geschwafelt.