【问题标题】:Can you pass more parameters than a function expects?你能传递比函数预期更多的参数吗?
【发布时间】:2011-08-28 10:08:04
【问题描述】:

如果您有两个类扩展同一个基类,并且需要让其中一个类覆盖一个函数以获取附加参数。在任一类上调用函数时始终传递附加参数是否可以?

一些伪代码来帮助演示......

如果我们有 3 个类和函数

  • foo::doSomething()
  • foo_subclass_one::doSomething()
  • foo_subclass_two::doSomething($input)

我有这三个之一的实例,我可以打电话吗 $instance.doSomething($input)

我 - 认为 - 发生的事情是 foo 和 foo_subclass_one 会忽略附加参数,而 foo_subclass_two 会使用它。它是否正确?如果我有很多子类并且真的想避免接触 10 多个文件,有没有更好的方法可以做到这一点?

谢谢!

【问题讨论】:

    标签: php parameter-passing


    【解决方案1】:

    是的,你可以。用func_get_args()收集他们

    【讨论】:

      【解决方案2】:

      有两种方法可以做到这一点:

      扩展方法以使用默认参数:

      public function doSomething($input=null) {}
      

      请注意,您需要对所有实例执行此操作,即使未使用它也是如此。

      在这种情况下,您可能需要使用方法的参数数组:

      public function doSomething() {
        $args = func_get_args();
        if (isset($args[0])) { $this->doSomethingElse();
      }
      

      【讨论】:

        猜你喜欢
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-03
        • 2016-11-07
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多