gpt4 book ai didi

PHP 函数 : more arguments than expected

转载 作者:行者123 更新时间:2023-12-04 17:32:16 26 4
gpt4 key购买 nike

PHP代码1:

function f() {return 'hello world!';}

echo f().'<br>';
echo f(123).'<br>';
echo f(123, 'foo').'<br>';

输出:

hello world!
hello world!
hello world!

PHP代码2:

function g(int $x) {return 'hello world!';}

echo g(123).'<br>';
echo g(123, 'foo').'<br>';

输出:

hello world!
hello world!

问题

当传递的参数多于函数预期的参数时,是否可以强制 PHP 抛出错误?


相关问题

  1. Why does PHP not throw an error when I pass too many parameters to a function?

跟进

已经有一个 RFC 提议 Strict Argument Count On Function Calls不幸的是,由于拒绝率很高而被撤回。其中一些有趣的点是:

  • “在测试过程中,可以清楚地看出所提议的严格参数计数检查不会成为问题。实际上,情况恰恰相反。它将有助于提高 PHP7 及更高版本的 PHP 代码质量,因为所有警告都对捕捉错误甚至错误。”
  • “该 RFC 因争议点多且被整体拒绝而被撤回,RFC 作者将不会再次提出。RFC 作者建议不要恢复此 RFC,因为它已被拒绝。”

还可以进行更深入的讨论:[PHP-DEV][RFC][DISCUSSION] Strict Argument Count

最佳答案

正如其他人所建议的那样,使用 ReflectionFunction 类。

<?php
function foo($bar, $baz) {
$refFunc = new ReflectionFunction(__FUNCTION__);
if(func_num_args() > $refFunc->getNumberOfParameters())
throw new Exception('Too many arguments.');
}

foo(1,2,3);

会抛出异常。

或者更简单。将它放在函数的开头:

function bar($baz, $bat) {
if(func_num_args()>count(get_defined_vars()))
throw new Exception('Too many args.');
}

bar(1,2,3);

会抛出异常。

关于PHP 函数 : more arguments than expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com