PHP允许你调用了一些事情,如果他们的功能 - 这包括:
- 函数名作为字符串(例如
"myFunc"
)
- 包含函数名作为第一个元素和参数数组作为第二元件(例如
["myFunc", ["arg1", "arg2"]]
)
- 阵列containin阵列g的对象作为第一元件和参数数组作为第二元件(例如
[new MyClass(), ["arg1", "arg2"]]
)的实施__invoke()
魔术方法
- 瓶盖类
- 实例/匿名功能
所有这些可以是由callable
typehint表示。因此,实现你的功能,例如:
tryTo(callable $callable) {
try {
$callable();
catch(\Exception $ex) {
return false;
}
}
将允许您使用tryTo()
为什么 PHP考虑调用和执行,无论你通过可用于调用一个函数。
所以下面的工作:
tryTo('myFunc'); // Equivalent to myFunc();
tryTo('MyClass::myFunc'); // Equivalent to MyClass::myFunc();
tryTo(['myFunc', ['myArg', 'myOtherArg']]; // Equivalent to myFunc('myArg', 'myOtherArg');
tryTo([new MyClass(), 'myFunc']); // Equivalent to (new MyClass())->myFunc();
tryTo(function() { echo 'test'; }); // executes whatever closure you pass
你可以看到here以获取更多信息。
这就是说,我认真质疑用例这样的一个功能 - 通常,异常应该不会发生,除非什么是错的,像打开你到静音故障使用功能。最起码,你应该记录发生的,所以你可以看到,出事了异常,但在我看来,无论他们是相关的,你应该处理特殊情况例外。然而,这完全是一个完全不同的讨论,并没有回答你的问题。
除了缺少美元符号,这段代码有什么问题? – trincot
当然,您可能还需要考虑将参数传递给您要调用的函数 –
是的,我想用参数调用try-catch块内的函数。 –