Funktionsaufruf per Variable

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

  • Funktionsaufruf per Variable

    Also, es ist ja möglich den Funktionsnamen in einer Variablen zu speichern, z.B.
    PHP-Code:
    $test 'md5';
    $test('Dies ist ein Test'); 
    So, dass funktioniert auch soweit...nur jetzt hab ich die Variable in einer Klasse drin, und dann funktioniert der Aufruf
    PHP-Code:
    $this->test('Dies ist ein Test'); 
    leider nicht.....weiß jemand, ob das auch ohne zwischenspeichern in einer TempVariablen geht? Er versucht dann nämlich auf die Funktion test der Klasse zuzugreifen, die es ja nicht gibt...das es eine Variable mit dem Namen gibt, wird gar nicht beachtet >_>
    Also, kennt jemand ein Möglichkeit, den Teil als Variablenaufruf und nicht als Funktionsaufruf zu definieren und würde mir die freundlicherweise verraten? XD

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

  • #2
    Hast Du's mit $this->$test("...") probiert? Keine Ahnung, ob das klappt, müßte aber eigentlich.

    Falls das nicht geht, dann mußt du halt in den sauren Apfel beißen und zu eval() greifen.

    Kommentar


    • #3
      Original geschrieben von pekka
      Hast Du's mit $this->$test("...") probiert? Keine Ahnung, ob das klappt, müßte aber eigentlich.
      Ne, geht leider nicht...meint er nur unbekannte Variable $Test und irgendein Fehler mit Klasse::$ -_-"
      Falls das nicht geht, dann mußt du halt in den sauren Apfel beißen und zu eval() greifen.
      geht das dann nicht schneller, wenn ich einfach den Wert in einer Variablen temporär speicher?
      Also statt
      PHP-Code:
      eval($this->test '("' $password '");'); 
      einfach
      PHP-Code:
      $test $this->test;
      $test($password); 
      ? So funktioniert es nämlich....
      Und die eval-Funktion zieht doch bestimmt mehr an Ressourcen als eine Variable, oder?

      .....ganz ausgereift ist das mit den OOP in PHP aber scheinbar immernoch nicht, trotz Version 5 >_>

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Hmm. Ob das Konstrukt

        Code:
        $test = $this->test;
        $test($password);
        dann noch mit den richtigen Objektverknüpfungen arbeitet ($this und so), wage ich zu bezweifeln. Weiß es aber nicht.

        Wenns um Leistung geht: Suboptimal ist das ganze in jedem Fall. Ich würde mir eine Alternative überlegen, bei der Du die Funktionsnamen fest verdrahten kannst.

        Kommentar


        • #5
          check das mal:
          PHP-Code:
          class test
          {
              var 
          $bar 'test1';
              
              function 
          test()
              { }
              
              function 
          init($_text)
              {
                  return 
          $this->{$this->bar}($_text);
              }
              
              function 
          test1($foo)
              {
                  return 
          md5($foo);
              }
          }

          $x = &new test();
          echo 
          $x->init('test'); 
          Kissolino.com

          Kommentar


          • #6
            thanx, das hat funktioniert

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar

            Lädt...
            X