在php中以字符串形式传递函数
我刚刚开始学习PHP,正在使用W3学校图坦卡蒙。在错误处理部分有以下代码:在php中以字符串形式传递函数,php,Php,我刚刚开始学习PHP,正在使用W3学校图坦卡蒙。在错误处理部分有以下代码: <?php function customError($errno,$errstr) { echo '<b>Error:</b> [$errno] $errstr<br />'; } set_error_handler('customError'); echo($test); ?> 为什么customError()函数作为字符串传递?这是图坦卡蒙的错误吗?
<?php
function customError($errno,$errstr) {
echo '<b>Error:</b> [$errno] $errstr<br />';
}
set_error_handler('customError');
echo($test);
?>
为什么customError()函数作为字符串传递?这是图坦卡蒙的错误吗?
另外,为什么没有定义
$test
?方法将字符串作为其第一个参数->这是为错误调用的函数
echo($test)
导致抛出错误,从而调用customError
函数,因为customError
本身并不是作为字符串传递的,而是作为字符串传递给PHP的。请参阅,它允许您为PHP指定自定义错误处理函数。不,这不是错误。这并不常见,但当出于同样的原因必须传递函数时,一些标准PHP函数会接受函数名作为参数<代码>设置错误处理程序是这些函数之一
如果你对此很好奇,你可以在这里阅读:
为什么customError()函数作为字符串传递
与函数说明符使用或字符串的原因相同。PHP只需要函数名。将执行一个函数名,该函数名不包含在引号中,try作为常量执行,或者(如果后跟括号),结果将传递给函数
由于PHP解析文档以执行的方式,您必须在该语言的方式下工作(使用字符串而不是函数调用的“指针”)
还有,为什么没有定义$test
这是一个有目的的调用,用于触发错误。他们试图让您使用未定义的变量,因此会发生错误,而您刚刚编写的代码(使用自定义处理)会捕获错误。您是否有此教程的链接?请使用其他教程进行学习。请参阅PHP手册@aspect中的“回调”部分,为什么会被否决?@codeninja:。w3schools的质量声誉非常糟糕,它们之所以“大”是因为它们花费了大量的时间/金钱,迫使自己在谷歌搜索结果中排名靠前。除了我在评论框中列出的字符外,代码在其他方面都不正确。我毫不怀疑这是W3学校出版的任何教程。此外,还有php.net/来回答初学者的问题。请参阅php.net/set\u error\u handler