抑制或catch()无效的函数调用 - PHP

时间:2009-04-22 22:32:14

标签: php

我动态调用的一系列函数有点像这样:

$function = 'someFunction';
$x = $function();

..但是,如果函数需要参数,并且我没有在调用中对其进行编码,我似乎崩溃了页面。例如:

function someFunction( $in_param1 ) {
  return "SUCCESS";
}

$function = 'someFunction';
// this next line does not work
$x = $function() or die("error");

我该如何处理这类错误?

谢谢 -

4 个答案:

答案 0 :(得分:5)

您可以使用set_error_handler函数捕获此信息:

function handle_errors( $errno, $errstr )
{
    die( "Your error will be caught here" );
}

set_error_handler( "handle_errors" );

$function = 'someFunction';
$x = $function();

答案 1 :(得分:3)

压制?是。抓住? See don.neufeld's answer

$x = @$function();

根据this page,您可以启用特定的INI设置,以便您可以读取以这种方式抑制的错误。

答案 2 :(得分:2)

您可以使用所需参数的默认值重新定义您的函数,例如

function someFunction( $in_param1=null ) {
  return "SUCCESS";
}

答案 3 :(得分:1)

我不知道有关抑制的信息,但您可以通过ReflectFunction类获取有关函数的更多信息。

<?php
function foo($a, $b, $c) {}

$func = new ReflectionFunction('foo');
echo $func->getNumberOfParameters();

输出“3”。