ホームページ >バックエンド開発 >PHPチュートリアル >PHPでの変数関数の使い方のまとめ

PHPでの変数関数の使い方のまとめ

不言
不言オリジナル
2018-06-12 16:25:561588ブラウズ

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 = &#39;Bar&#39;;
  $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 = &#39;static property&#39;;
 static function Variable()
 {
  echo &#39;Method Variable called&#39;;
 }
}
echo Foo::$variable; // This prints &#39;static property&#39;. It does need a $variable in this scope.
$variable = "Variable";
Foo::$variable(); // This calls $foo->Variable() reading $variable in this scope.

以上がこの記事の全内容です。その他の関連内容については、PHP に注目してください。中国語のサイトです!

関連する推奨事項:

PHP 文字列のチートシートの概要について

3 つの PHP 再帰関数の実装数値の累積の方法と実装

#

以上がPHPでの変数関数の使い方のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。