【问题标题】:Php Custom Mvc - how to check if function gets arguments?Php Custom Mvc - 如何检查函数是否获取参数?
【发布时间】:2012-05-28 14:37:26
【问题描述】:

我最近在为 php 编写一个自定义 mvc,其中一个问题真的很困扰我: 我得到了控制器类,我想检查该类的某个函数是否获取参数,如果没有,则返回 false。

有什么方法可以做到吗? 因为我在 php.net 和 google 中搜索并没有找到任何东西.... 谢谢!

【问题讨论】:

  • 您能否澄清一下:您是否想从外部检查某个方法是否需要参数?或者你想从方法内部检查它是否接收参数?

标签: php model-view-controller class function


【解决方案1】:

使用reflection:

$reflection = new ReflectionMethod ($class_name, $method_name);
$params = $r->getParameters();

$params 现在是 ReflectionParameter 对象的数组

【讨论】:

    【解决方案2】:

    看看func_get_args

    您可以在控制器的方法中使用它来获取传递给该方法的所有参数的列表。

    您还拥有func_num_args,它只会为您提供传递给您的方法的参数数量。

    【讨论】:

    • 我可能错了,但在我看来,OP 希望从函数外部看到函数/方法是否接受参数。
    • 一开始我也是这么想的,但后来他说他希望方法返回false。他会及时通知我们的:)
    • 好的。在这种情况下,反射几乎是您唯一的选择。请注意不要过度使用它,因为它会使您的代码难以调试 1000 倍,尤其是当外部人员开始查看它时。
    【解决方案3】:

    使用函数 func_get_args

    function sum(){
        $s=0;
        foreach(func_get_args() as $a) $s+= is_numeric($a)?$a:0;
        return $s;
    };
    
    print sum(1,2,3,4,5,6); // 21
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多