PHP は変数関数の概念をサポートしています。これは、変数名の後に括弧がある場合、PHP は変数の値と同じ名前の関数を探し、それを実行しようとすることを意味します。この記事では、PHP 変数関数の使用方法の概要を紹介することに重点を置いています。興味のある方はぜひご覧ください。
変数関数
PHP は変数関数の概念をサポートしています。これは、変数名の後に括弧がある場合、PHP は変数の値と同じ名前の関数を探し、それを実行しようとすることを意味します。変数関数は、コールバック関数や関数テーブルなどのいくつかの目的を実装するために使用できます。
変数関数は、echo()、print()、unset()、isset()、empty()、include()、require() および同様のステートメントなどの言語構造では使用できません。これらの構造体を変数関数として使用するには、独自のラッパー関数を使用する必要があります。
最初に疑似コードを作成します。
protected $model; public function __construct(Category $category) { $this->model = $category; } public function getLists($request, $isPage = 'get', $order = 'created_at', $sort = 'desc') { return $this->model->orderBy($order, $sort)->$isPage(); }
getLists には、$isPage パラメータがあります。本来の目的は、get を渡してすべてのデータを取得し、paginate を渡してページ付けすることです。書き終えた後、何かがおかしいと感じました。通常の書き方では、すべてのデータを検索します $this->model->orderBy($order, $sort)->get();
これはこんな感じです、見たことありませんget() を置き換えるために変数を使用しました。実際の動作ではプログラムは正常に実行されます。次に、フォーラムでこの書き方について質問しました。次に「変数関数」という概念を紹介します。
変数関数とは何ですか?
PHP は、可変個引数関数の概念をサポートしています。これは、変数名の後に括弧がある場合、PHP は変数の値と同じ名前の関数を探し、それを実行しようとすることを意味します。
この概念を理解すると、上記の手順が理解できるようになります。プログラムの実行中に、$isPage が get に置き換えられ、$isPage の後に括弧がある場合、プログラムは同じ名前の関数を検索します。その後、実行を続行します。
例:
<?php function foo() { echo "In foo()<br />\n"; } function bar($arg = '') { echo "In bar(); argument was '$arg'.<br />\n"; } $func = 'foo'; $func(); // 执行 foo(); 命令行中输出:In foo()<br /> $func = 'bar'; $func('test'); // 执行 bar();命令行中输出:In bar(); argument was 'test'.<br />
オブジェクトのメソッドを呼び出すための変数関数の構文。
<?phpclass 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() // 命令行执行输出: This is Bar
静的メソッドを呼び出す場合、関数呼び出しは静的プロパティよりも優先されます。変数メソッドと静的プロパティの例。
<?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での変数関数の使い方のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。