摘要:接下来就要引入一个概念,可变函数。这意味着如果一个变量名后有圆括号,将寻找与变量的值同名的函数,并且尝试执行它。示例执行命令行中输出执行命令行中输出可变函数的语法来调用一个对象的方法。示例代码来源可变函数转载地址
PHP 可变函数
先将我的伪代码写上。
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 后有一个圆括号,那么程序就会寻找同名函数。进而继续执行。
示例:
"; } function bar($arg = "") { echo "In bar(); argument was "$arg".
"; } $func = "foo"; $func(); // 执行 foo(); 命令行中输出:In foo()
$func = "bar"; $func("test"); // 执行 bar();命令行中输出:In bar(); argument was "test".
可变函数的语法来调用一个对象的方法。
$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
当调用静态方法时,函数调用要比静态属性优先。Variable 方法和静态属性示例。
Variable() reading $variable in this scope.
示例代码来源 php 可变函数
转载地址 lost in you
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28819.html
摘要:支持可变函数的概念。可变函数可以用来实现包括回调函数,函数表在内的一些用途。注意可变函数不能用于例如,,,,,,以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。可以用可变函数的语法来调用一个对象的方法。 php支持可变函数的概念。这意味着如果一个变量名后面有圆括号,php将寻找与变量的值同名的函数,并且尝试运行它。可变函数可以用来实现包括回调函数,函数表在内的一些用...
摘要:的语法和其它流程控制结构相似部分允许设定代码段的行为。返回值在失败时返回并且发出警告。当一个函数是有条件被定义时,必须在调用函数之前定义。有条件的函数不能在此处调用函数,因为它还不存在,但可以调用函数。 流程控制 PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分...
摘要:声明静态变量时不能用表达式的结果对其赋值正确错误使用表达式的结果赋值错误使用表达式的结果赋值静态变量与递归函数静态变量提供了一种处理递归函数的方法。 一、变量的定义 1. 变量的命名规则 变量名可以包含字母、数字、下划线,不能以数字开头。 $Var_1 = foo; // 合法 $var1 = foo; // 合法 $_var1 = foo; // 合法 $Var-1 = foo; /...
摘要:是用户自定义函数中支持可变数量的参数列表。在及更早版本中,使用函数,,和。可变数量的参数列表,这个概念可能你会觉得很抽象。我们再看一个示例以上例程会输出可变数量参数将被传递到中,给定的数组会作为参数变量。 最近在读 Laravel 源码的时候,发现了一个段特别有趣的代码,大家请看: showImg(https://segmentfault.com/img/remote/14600000...
阅读 2782·2021-10-08 10:04
阅读 3167·2021-09-10 11:20
阅读 496·2019-08-30 10:54
阅读 3284·2019-08-29 17:25
阅读 2280·2019-08-29 16:24
阅读 850·2019-08-29 12:26
阅读 1430·2019-08-23 18:35
阅读 1908·2019-08-23 17:53