2011-02-15 24 views
0

我需要知道,函數接受多少個參數(包括可選的參數)。不用調用該函數並且不會出錯。就像我可以在調用函數之前檢查is_callable以避免出現php錯誤。
例如,在JavaScript中每個函數有一個length屬性:獲取函數參數的數量OUTSITE in php

Math.sin.length == 1 
Array.prototype.slice.length == 2 

我知道,這將只返回聲明的參數,但有一個爲與JS語法默認值可選參數不支持。

有沒有類似的東西在php
使用php 5.2+就足夠了。僅用於全局功能(而非方法)也足夠了。
像試圖用0參數調用函數,然後用1參數...這樣的黑客解決方案非常灰心,導致函數調用成本可能非常高。

回答

4

使用ReflectionFunction

function a($b, $c = 1) { 
    echo $b, $c; 
} 

$rf = new ReflectionFunction('a'); 
echo $rf->getNumberOfParameters(); 

在PHP 5.3,ReflectionFunction支持關閉:

$a = function($b, $c = 1) { 
    echo $b, $c; 
}; 

$rf = new ReflectionFunction($a); 
echo $rf->getNumberOfParameters(); 
+0

我每天都在學習這個網站的新事物。 +1 – 2011-02-15 18:47:19