如何检查方法是否存在并在PHP中有参数

时间:2014-04-08 21:41:57

标签: php

我想检查一个方法是否存在并且有参数。 这是一些片段。

// this only checks if the function exist or not
if(method_exists($controller, 'function_name')) 
{
  //do some stuff
}

但我想做的是

if(method_exists($controller, 'function_name(with_args)'))
{

}

2 个答案:

答案 0 :(得分:9)

您可以使用ReflectionMethod' getParameters获取方法的参数列表。然后,您可以检查该列表的长度或对参数执行所需的任何其他操作。

<?php
    class Foo {
        function bar($a, $b, $c) {
            return $a + $b + $c;
        }
    }

    $method = new ReflectionMethod('Foo', 'bar');
    var_dump($method->getParameters());
?>

我不知道你会使用它,但我建议不要随便使用反射。你可能会重新考虑你的做事方式。

答案 1 :(得分:0)

函数重载或方法重载是一种允许创建多个具有相同名称的方法的功能,这些方法在输入类型和函数输出方面彼此不同。不幸的是,这不是在php中实现的,你不能使用方法重载来使用两个具有相同名称的函数。

为什么要使用函数重载来使用funcition_exists?