Ankündigung

Einklappen
Keine Ankündigung bisher.

Typenrermittlung Resource

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

  • Typenrermittlung Resource

    Besteht die Möglichkeit, eine Variable von einem Typ von recource zu ermitteln?
    Genauer gesagt, soll der Typ nicht nur die Tatsache, dass der von resource ist zurückgeben, sondern auch welcher genaue Typ.

    z.B. Vergleichbar ist das mit Object und Object vom Typ MyClass

    Gibt es in PHP ähnliche Detektionen?

    Bei Objekte hab ich mir die ReflectionObject zu Nutze gemacht. Bei resource scheitere ich aber.


  • #2
    get_resource_type() sollte dir da helfen

    Kommentar


    • #3
      Hilft dir dieses Schnipsel weiter
      PHP-Code:
      function getvar_typedetails($var)
      {

          if ( 
      gettype($var) === "resource" ){

              if ( 
      get_resource_type($var) === "stream" ){

                  
      $result[0] = "stream";
                  
      $result[] = stream_get_meta_data($var);

                  return (array)
      $result;
              }
          }

          if ( 
      gettype($var) === "object" ) {

              
      $result[0] = "object";
              
      $result[] = (array)$var;
              return (array)
      $result;
          }

          
      $result[0] = gettype($var);
          
      $result[1]['value'] = $var;
          return (array)
      $result;
      }


      echo 
      "<pre>";   
      $c M_PI;
      print_rgetvar_typedetails($c) );
      echo 
      "<br>\n";          


      $c mysql_connect();
      print_rgetvar_typedetails($c) );
      echo 
      "<br>\n";

      $fp fopen("foo""w");
      print_rgetvar_typedetails($fp) );
      echo 
      "<br>\n";

      $doc = new datetime();
      print_rgetvar_typedetails($doc) );
      echo 
      "</pre>";   

      ?> 
      Ergibt folgende Ausgabe
      Code:
      Array
      (
          [0] => double
          [1] => Array
              (
                  [value] => 3.1415926535898
              )
      
      )
      
      
      Array
      (
          [0] => resource
          [1] => Array
              (
                  [value] => Resource id #3
              )
      
      )
      
      
      Array
      (
          [0] => stream
          [1] => Array
              (
                  [wrapper_type] => plainfile
                  [stream_type] => STDIO
                  [mode] => w
                  [unread_bytes] => 0
                  [seekable] => 1
                  [uri] => foo
                  [timed_out] =>
                  [blocked] => 1
                  [eof] =>
              )
      
      )
      
      
      Array
      (
          [0] => object
          [1] => Array
              (
                  [date] => 2019-02-12 16:29:54
                  [timezone_type] => 3
                  [timezone] => Europe/Berlin
              )
      
      )
      Nur als Ausbau-Anreiz zu sehen.

      Kommentar


      • #4
        In der Typeninfo Funktion aus der Debug-Klasse (s.Signatur) solltest du zum Thema noch einiges finden.
        PHP-Klassen auf github

        Kommentar

        Lädt...
        X