当检查未定义的对象属性时,组合isset和is_null失败

|| 我正在尝试将
isset
is_null
合并到一个函数中以便于使用 我的方法:
class sys {

  public static function is_null(&$variable) {

    // if it\'s not set
    if (!isset($variable)) {
      return true;
    }

    // if array
    if (is_array($variable)) {
      return (boolean) (count($variable) < 1);
    }

    // if string
    return (boolean) (strlen($variable) < 1);
  }

}
我在对象中使用它时遇到的问题是以下异常:   ErrorException [注意]:重载属性xxx的间接修改无效。     
已邀请:
为了易于使用?等效为
return !isset($var) || empty($var);
。这么难吗? 建立这样的函数时,您需要意识到的是
isset()
不是函数。这是一种语言构造。因此,您不能将变量传递给函数,然后在该变量上调用isset(嗯,至少没有产生通知)。 其次,不需要在:
return (boolean) (strlen($variable) < 1);
中强制转换为布尔值。与ѭ6完全相同。 第三,没有理由to7ѭ或使用
strlen()
,因为that9ѭ正是要检查的内容。 第四,根本没有理由通过引用传递论点。它不会更改任何内容,并且会在没有理由的情况下不必要地创建引用。只需将参数视为正常值即可(由于写入时复制,它不会使用更多的内存)。 总而言之,我建议不要使用这种“帮助器”功能。如果要检查是否为空,只需使用
!isset($var) || empty($var)
。它更清晰,更具语义意义,并​​且坦率地说,这并非重复工作。如果您不在乎通知,您可以将整个通话替换为ѭ11... 但是,如果您确实使用这种功能,则建议您更改名称。即使变量不是
null
,它也会返回
true
,因此调用函数
is_null
会导致误导。也许15英镑会更好...     
只需用
empty()
    

要回复问题请先登录注册