我注意到,几乎在我编写的每个带有参数的PHP函数中,都以以下行开头:
if ( ! $first_parameter || ! $second_parameter ){
return false;
}
我的问题有点奇怪
我很想用另一种类型的表达式来代替它,类似于操作数,因为我知道函数不能进行
带有一个函数(不起作用)的示例:
require_parameters( $first_parameter, $second_parameter );
然而,即使require_paremeters
返回false,它也不会从原始函数返回false
有可能为PHP编写一个函数或C扩展来做类似的事情吗:
require_parameters $first_parameter, $second_parameter;
如果其中一个为空,那么原始函数将返回false。
谢谢。
您要寻找的东西在技术上是不可能的。
要从原始函数返回false,必须显式地使用return语句——不要绕过这一点。
在您的示例中,您需要使用:
return require_parameters( $first_parameter, $second_parameter );
但是require_parameters的定义必须使用varargs,因为您永远不知道可能需要多少个参数。
而且,由于PHP似乎不会直接处理varargs,因此您需要使用func_get_args()
和func_num_args()
来检查每个接收到的arg是否已设置。文档可以在这里找到。
更新:正如Jad所指出的,这里的错误是,无论结果如何,该函数都将返回。不幸的是,(据我所知)没有办法简化以下内容,但我们可以使用短路逻辑使检查比使用全面的if
短得多:
更新:我的坏消息,在or
之后退货将不起作用。恐怕再简单不过了。
if (!require_parameters( $first_parameter, $second_parameter )) return false;