2013-02-23 60 views
2

我正在爲我的CMS的插件系統工作,以使事件註冊系統變得輕鬆我需要一個可以執行以下操作的函數。從一個類中獲取所有函數及其參數

我需要一個函數,它將返回指定類中的所有函數及其參數的類。當然,如果從一個類中獲得函數的函數和獲取函數參數的所有類名的函數是不同的,那就好了。

例如,如果您有以下類與這些功能;

class MyClass { 
    public function myFunction(Event $event) { 
     // Function code 
    } 
} 

如果可以返回這樣的東西,這將是非常棒的;

Array() { 
    'myFunction' => Array() { 
     0 => 'Event' 
    } 
} 

有沒有辦法做到這一點?

由於提前, 添VISEE

+0

nope。不標準。可能是一個插件/類,會增加一些功能,但沒有任何開箱即用。最接近的將是'get_defined_functions'和'get_declared_classes',但這不會做你所問的。 – 2013-02-23 21:00:35

+0

http://www.php.net/manual/en/function.call-user-func-array.php? – Winston 2013-02-23 21:04:23

+0

正如@DiegoAgulló回答的那樣,您可以使用Reflection API,這正是我需要的東西,這是內置於PHP 5+,我的CMS需要PHP 5.3.1才能運行,所以是的,這些功能似乎是可行的:) – 2013-02-23 22:27:49

回答

5

你究竟指的是Reflection API。反映classesmethods可能會導致你做你需要的。例如,嘗試:

$class = new ReflectionClass('MyClass'); 
$methods = $class->getMethods(); 

print_r($methods); 

foreach ($methods as $method) { 
    print_r($method->getParameters()); 
} 
+0

這看起來不錯,我現在就試試吧!感謝您的快速響應順便說一句。 – 2013-02-23 22:13:00

+0

這個功能非常完美,非常感謝! :) 將您的答案標記爲答案。 – 2013-02-23 22:24:35

+1

我很高興能幫上忙! :) – 2013-02-23 22:29:29

相關問題