在 PHP 中使用“func_get_arg”的好例子是什么?

php
2022-08-30 17:42:02

我刚刚发现PHP中有一个调用的函数,它使开发人员能够使用变体样式来获取参数。它似乎非常有用,因为参数的数量现在可以是任意的,但是我想不出任何使用它的好例子。func_get_arg

使用这个函数来充分利用其多态特性的例子有哪些?


答案 1

我通常使用如果想要多个参数,则更容易使用。func_get_args()

例如,要重新创建 PHP 的 .max()

function max() {
   $max = -PHP_INT_MAX;
   foreach(func_get_args() as $arg) {
      if ($arg > $max) {
          $max = $arg;
      }
   }
   return $max;
}

密码键盘

现在你可以做,得到.echo max(1,5,7,3)7


答案 2

从 php5.6 开始,不再有用例;它的功能已被使用语法的可变参数函数所取代:func_get_arg...

/**
 * @param array $arguments
 */
public function poit(...$arguments)
{
     foreach($arguments as $argument) {
         ...
     }
}

如果存在最后重载的方法,这尤其有用;人们确实需要过滤掉第一个参数,如一个例子所示:

旧式使用:func_get_arg

function foo($a, $b) {
    $c = array();
    if (func_num_args() > 2) {
        for($i = 0; $i < func_num_args()-2; $i++) {
            $c[] = func_get_arg($i+2);
        }
    }
    var_dump($a, $b, $c)
    // Do something
}
foo('a', 'b', 'c', 'd');

较新的可变参数样式;

function foo($a, $b, …$c) {
    var_dump($a, $b, $c);
    // Do something
}
foo('a', 'b', 'c', 'd');

两个 foo 产生相同的输出,其中一个更易于编写。


推荐