This article mainly introduces the variable functions of PHP, which has certain reference value. Now I share it with everyone. Friends in need can refer to it
Let me write my pseudocode first.
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(); }
In getLists
, there is a parameter of $isPage
. The original intention is to pass in get
to get all the data, and paginate
to paginate. After I finished writing, I felt something was wrong. In our usual way of writing, find all data $this->model->orderBy($order, $sort)->get();
This is like this, I have never seen it used Variables to replace get()
. In actual operation, the program executes normally. Then asked about this writing method in the forum. Next, we will introduce a concept, "Variable Function".
PHP supports the concept of variable functions. This means that if there are parentheses after a variable name, PHP will look for a function with the same name as the variable's value and try to execute it.
After understanding this concept, the above procedure will make sense. When the program is running, $isPage
is replaced by get
, and there is a parenthesis after $isPage
, then the program will look for a function with the same name. Then continue execution.
Example:
<?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 />
Variable function syntax to call an object's method.
<?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() // 命令行执行输出: This is Bar
When calling static methods, function calls take precedence over static properties. Variable methods and static properties examples.
<?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.
The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
The above is the detailed content of php variable function. For more information, please follow other related articles on the PHP Chinese website!