PHP学习笔记(八)
返回值
值通过可选参数的返回语句返回
return的使用
函数不能返回多个值,但可以通过返回一个数组来得到类似的效果
函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符&:
可变函数
PHP支持可变函数的概念。意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。可变函数可用来实现包括回调函数,函数表在内的一些用途。
可变函数不能用于例如echo,print,unset(),isset(),empty(),include,require以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数
也可用可变函数的语法来调用一个对象的方法
当调用静态方法时,函数调用要比静态属性优先:
内部(内置)函数
PHP 有很多函数和结构,还有部分函数要和特定地PHP扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。
在PHP 中标准函数分为核心函数和扩展函数两大类。核心函数如字符串处理和变量操作相关函数已经内置在 PHP 中,可以直接使用。而扩展函数则需要额外加载相应的扩展模块才能生效,例如使用 imagecreatetruecolor()
需要 GD 扩展支持,调用 mysqli_connect()
必须启用 MySQLi 扩展。如果未正确加载扩展而调用相关函数,PHP 会抛出致命错误,提示函数未定义。
要检查当前 PHP 环境已加载的扩展,可以使用 phpinfo()
或 get_loaded_extensions()
函数。许多扩展在标准安装中默认启用,但仍需根据实际需求调整配置。
在使用 PHP 函数时,必须仔细阅读官方文档,明确其行为模式。例如,str_replace()
返回修改后的字符串,而 usort()
直接修改传入的数组本身。手册中每个函数的文档都会详细说明参数、返回值、兼容性以及可能的副作用,正确理解这些细节是编写稳定 PHP 代码的关键。
匿名函数
匿名函数也叫闭包函数,允许临时创建一个没有指定名称的函数。经常用作回调函数callable参数的值。
匿名函数目前是用Closure类来实现的
闭包函数也可以作为变量的值来使用。PHP会自动把此种表达式转换成内置类Closure的对象实例,把一个closure对象赋值给一个变量的方式与普通变量赋值的语法一样
闭包可以从父作用域中继承变量。任何此类变量都应该用use语言结构传递,PHP 7.1起,不能传入此类变量:superglobals、$this 或者和参数重名
从PHP 8.0 起, 作用域继承的变量列表可能包含一个尾部的逗号,这个逗号将被忽略。
这些变量都必须在函数或类的头部声明。从父作用域中继承变量与使用全局变量是不同的。全局变量存在于一个全局范围,无论当前在执行的是哪个函数,闭包的父作用域是定义该闭包的函数
当在类的上下文中声明时,当前类会自动绑定,使$this在函数的作用域中可用。若不需要自动绑定,可使用静态匿名函数替代
静态匿名函数
匿名函数允许被定义为静态化,可以防止当前类自动绑定到它们身上,对象在运行时也可能不会被绑定到它们身上。