Methodenvariablen

hmmNaGut

Erfahrenes Mitglied
Hi, eine kleine Frage
Es gibt In PHP functionsvariablen.

zb.:
PHP:
 function foo()
{
}

$functionsvar='foo';

// Function Foo mit hilfe Variable aufrufen

$functionsvar();

Gibt es eine Möglichkeit bzw..
Wie kann ich Methoden innerhalb einer Klasse übergeben.

Hoffe ich habe mich verständlich ausgedrückt.
Danke Patrick
 
Meinst Du das hier?

PHP:
<?php

class Test
{
  public function ichBinEinTest( $functionName )
  {
    echo __METHOD__   . "<br>";
    echo __FUNCTION__ . "<br>";

    $this->{$functionName}( "World" );  // Die geschweiften Klammern sind meines Wissens nicht Pflicht, aber ich verwende Sie wegen besserer Lesbarkeit
  }

  private function nochEinTest( $param )
  {
    echo "Hello $param! <br>";
  }
}

$myTest = new Test();

$myTest->ichBinEinTest("nochEinTest");

// OUTPUT

// Test::ichBinEinTest
// ichBinEinTest
// Hello World!

?>

Hier noch was zum lesen ...

http://de3.php.net/language.constants.predefined
 
Zuletzt bearbeitet:
$this->$functionName( "World" );

genau ...

An das $this-> habe ich irgendwie nicht gedacht.

Ich dachte ""

an das

$functocall='$this->functionsname'
 
Es war nicht ganz das was ich gesucht habe hat mir, aber den
Weg in die richtige Richtung gezeigt. Danke
PHP:
/*
query_string = beinhaltet Methoden mit einen Schlüssel
definition befindet sich im Konstruktor
*/

class {

		var $query_string=array();	// hier werden die Querystrings und die funtionen die aufgerufen werden	
	
		function erbatUManager()  // Der Konstruktor
		{
			$this->m_type="UserManager";
			
                        // Definition der oben beschriebenen Array
			$this->query_string=array(
				'userverwaltung'=> 'show_user_administration',
				'usererstellen' => 'admin_create_user_dialog'
			);
		}
		function query()
		{
			if ($_GET['modul']==$this->gettype())
			{
			/*
				if($_GET['q']=="userverwaltung")
				{
					self::show_user_administration();
				}
				elseif ($_GET['q']=="usererstellen")
				{
					self::admin_create_user_dialog();
				}
				*/
			}

    // TODO: Kontrollieren ob es den Key gibt
			$key=$_GET['q'];
			$tmpfuncvar=$this->query_string[$key];
			self::$tmpfuncvar();
    // Aufruf der Funktions mittels Methodenvar
			
		}
}

Für die Nachwelt...
Bei Sicherheitsrisiken einfach schreiben
LG Patrick
 
Zurück