PHP - 数据类型
布尔型
整型
浮点型
字符串
数组
对象
资源型
资源是由专门的函数建立和使用用的,比如fopen
,mysql_connect
等,可用get_resource_type
来返回资源类型
$db = mysql_connect(); echo get_resource_type($db) . PHP_EOL; $fp = fopen('/', 'w'); echo get_resource_type($fp);
使用打开文件,连接数据库,创建画布等的函数返回的都是资源型
Iterables
回调类型
能够接收用户自定义函数的函数,比如call_user_func
,sort
。回调函数不仅仅是函数,也可以是对象方法,包括静态类方法。
拿call_user_func
举例,sort
可看这里
传递函数
function doSomething() { echo 'Hello World'; } call_user_func('doSomething'); // Hello World
带有参数的回调函数
function doSomething(...$param) { print_r($param); } call_user_func('doSomething', '1', '2'); // 输出一个数组 // Array ( [0] => 1 [1] => 2 )
传递类和方法
class Test { public function doSomething() { echo "Hello World"; } } call_user_func([new Test(), 'doSomething']); // 输出 // Hello World
静态方法
class Test { public static function doSomething($param) { echo $param; } } call_user_func(['Test', 'doSomething'], 1, 2); // 输出第一个参数 // 1
传递带有参数的类和方法
class Test { public function doSomething($param) { echo $param; } } call_user_func([new Test(), 'doSomething'], 1, 2); // 输出 // 1
从上面几个实例可以得出以下几点:
call_user_func
函数可以使用用户的自定义函数- 可以传递类和方法,静态方法不需要类实例化
call_user_func
函数可以传递多个参数,直接echo
获取的是第一个参数,如果需要获取全部参数,需要在方法中以下面这种方式获取,这是php
的语法糖。function doSomething(...$param) { print_r($param); }