PHP は 変数関数 の概念をサポートしています。これは、変数名の後にかっこが付いている場合、PHP は変数の値と同じ名前の関数を探し、それを実行しようとすることを意味します。変数関数は、コールバック関数や関数テーブルなどのいくつかの目的を実装するために使用できます。
変数関数 (例: echo 、 print 、 unset() 、 isset() 、 empty() 、 include 、 require および同様の言語構造は使用できません。これらの構造体を可変引数関数として使用するには、独自のラッパー関数が必要です。
例 #1 変数関数の例
<?php function foo () { echo "In foo()<br />\n" ; } function bar ( $arg = '' ) { echo "In bar(); argument was ' $arg '.<br />\n" ; } // 使用 echo 的包装函数 function echoit ( $string ) { echo $string ; } $func = 'foo' ; $func (); // This calls foo() $func = 'bar' ; $func ( 'test' ); // This calls bar() $func = 'echoit' ; $func ( 'test' ); // This calls echoit() ?>
変数関数の構文を使用して、オブジェクトのメソッドを呼び出すこともできます。
例 #2 変数メソッドの例
<?php class Foo { function Variable () { $name = 'Bar' ; $this -> $name (); // This calls the Bar() method } function Bar () { echo "This is Bar" ; } } $foo = new Foo (); $funcname = "Variable" ; $foo -> $funcname (); // This calls $foo->Variable() ?>
静的メソッドを呼び出す場合、関数呼び出しは静的プロパティよりも優先されます:
例 #3 変数メソッドと静的プロパティの例
<?php class Foo { static $variable = 'static property' ; static function Variable () { echo 'Method Variable called' ; } } echo Foo :: $variable ; // This prints 'static property'. It does need a $variable in this scope. $variable = "Variable" ; Foo :: $variable (); // This calls $foo->Variable() reading $variable in this scope. ?>
以上がPHP変数関数に関するいくつかの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。