empty()和isset()如何避免未定义变量的警告?

时间:2017-10-02 07:49:44

标签: php function

我知道按值传递,按引用传递等的概念......所以,我理解为什么显式定义的函数在未定义参数时会发出警告。

但是,如果empty()和isset()是函数,那么为什么在传递未定义的变量时它不会发出警告?这里有一些特殊的魔法吗?我该如何复制它?

1 个答案:

答案 0 :(得分:3)

public function validate($data,$errors) { // Do your data processing here and in case of an // error add it to the errors array like: $errors->add( 'validation', __( 'Please input that correctly.' )); } add_action('woocommerce_after_checkout_validation', 'validate',10,2); empty()实际上不是函数。

它们是内置于语言中的关键字,由编译器执行,这就是所讨论的行为是可能的 - 编译器(与常规函数执行的运行时引擎不同)已经知道变量是否存在。

作为一个副作用,这就是为什么在PHP 5中你无法定义名为isset()empty()isset()等的类方法。你仍然无法声明类,或list()使用相同名称的常量。

其他一些语言将此作为名为fexpr的功能提供。