Ankündigung

Einklappen
Keine Ankündigung bisher.

Zugriff auf statische methoden oder konstanten

Einklappen

Neue Werbung 2019

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

  • Zugriff auf statische methoden oder konstanten

    Ich möchte auf statische Methoden und Konstanten eines unbekannten Objects zugreifen, der Name des Objects ergibt sich aus einer Variablen. Bei normalen Methoden und Properties geht das ja sehr einfach
    Code:
    $object->methode()
    aber folgender Code geht leider nicht:
    Code:
    $object::statischeMethode()
    Wie kann man das machen, oder geht das überhaupt?

  • #2
    Dann verwende get_class(), um den Namen der Klasse zu ermitteln.

    Kommentar


    • #3
      Eine statische Methode muss auf die Klasse und nicht das Objekt aufgerufen werden.

      NameDerKlasse::statischeMethode();

      Kommentar


      • #4
        Zitat von Zergling
        Eine statische Methode muss auf die Klasse und nicht das Objekt aufgerufen werden.
        Das ist mir schon klar, nur wie kann ich das für einen dynamischen klassennamen machen?

        Kommentar


        • #5
          der Name $object ist unglücklich (falsch) gewählt.
          $classname passt wohl eher.

          PHP-Code:
          <?php
          error_reporting
          (E_ALL|E_STRICT); // php5
          ini_set('display_errors'true);

          class 
          foo {
              public static function 
          bar() {
                  echo 
          date('H:i:s d.m.Y');
              }
          }

          $classname 'foo';
          call_user_func(array($classname,'bar'));
          ?>
          Geht auch über Reflection, aber so ist es vielleicht erstmal einfacher.
          http://www.php.net/call_user_func

          Kommentar


          • #6
            Und wie kann man auf Konstanten zugreifen?

            Kommentar


            • #7
              Da kenne ich keinen Weg um Reflection herum.
              http://php3.de/manual/de/language.oop5.reflection.php

              PHP-Code:
              <?php
              error_reporting
              (E_STRICT);
              ini_set('display_errors'true);

              class 
              foo {
                  const 
              konstante 'abc';
                  public static function 
              bar() {
                      echo 
              date('H:i:s d.m.Y');
                  }
              }

              $r = new ReflectionClass('foo');
              $r->getMethod('bar')->invoke(null,null); // statische Funktion ohne Parameter
              echo "\n--\n";
              echo 
              $r->getConstant('konstante');
              ?>

              Kommentar

              Lädt...
              X