布爾型
整型
浮點型
字符串
數組
對象
資源型
資源是由專門的函數建立和使用用的,比如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); }
-