Laufzeit Typenüberprüfung in PHP



  • Hallo zusammen
    Wie kann ich in PHP zur Laufzeit den Datentyp einer Variable ermitteln ?
    Bei herkömmlichen Datentypen wie Integer, Float usw. ist das kein Problem mit der Funktion gettype. Doch ich muss wissen, ob der übergebene Parameter einem ganz bestimmten objekttyp entspricht, um Laufzeitfehler abzufangen...
    Hier ein Bsp.

    class Topic{
    var $a;
    }

    function search(topic){ if(gettype(topic) == "Topic"){
    return $topic->soSomething();
    }
    else return -1;
    }

    Sowas in der Art, doch die funktion gettype gibt soviel ich weiss, nur einer der folgenden Rückgabewerte: "integer","double","string","array","object","unknown type"...

    Weiss jemand eine Lösung zu meinem Problem ?

    Gruss Ishildur


  • Mod

    hau doch ein gettype() in die klasse - die klasse weis ihren typ am besten.

    dann checkst du mit method_exists() ob gettype() existiert - und alles paletti



  • Tja, das Problem ist nur, dass diese Klasse einer API angehört...
    Ich muss einfach sicher sein, dass das Objekt, das ich bekomme, eine Instanz einer bestimmten Klasse ist, da sonst ein Laufzeitfehler entstehen könnte, wenn ich eine entsprechende Memberfunktion aufrufe...



  • Mit get_class kannst du den Namen der Klasse prüfen. Vielleicht hilft das.



  • wíe wärs mit var_dump?

    <pre>
    <?php
        $a = array (1, 2, array ("a", "b", "c"));
        var_dump ($a);
    
        class x{
            var $test =0;
            }
    
        $myx=new x;
        var_dump($myx);
        var_dump($myx->test);
    ?>
    </pre>
    

    ---------------------------
    ausgabe:

    array(3) {
      [0]=>
      int(1)
      [1]=>
      int(2)
      [2]=>
      array(3) {
        [0]=>
        string(1) "a"
        [1]=>
        string(1) "b"
        [2]=>
        string(1) "c"
      }
    }
    object(x)(1) {
      ["test"]=>
      int(0)
    }
    int(0)
    
    ?>
    

    (muss ich selber mal testen, ob das was bringt..)

    [ Dieser Beitrag wurde am 10.02.2003 um 17:38 Uhr von elise editiert. ]


Anmelden zum Antworten