如何避免isset()和empty()

我有几个较旧的应用程序,当在E_NOTICE错误级别上运行时会抛出大量“xyz未定义”和“未定义的偏移”消息,因为没有使用isset()和consorts 显式检查变量的存在。

我正在考虑通过它们来使它们与E_NOTICE兼容,因为关于缺失变量或偏移的通知可以是救生员,可能会获得一些微小的性能改进,并且它总体上更清洁。

但是,我不喜欢对我的代码造成数百isset() empty()array_key_exists()s的影响。它变得臃肿,变得不那么可读,没有在价值或意义上获得任何东西。

如何在没有过多变量检查的情况下构建代码,同时还兼容E_NOTICE?


三国纷争
浏览 379回答 3
3回答

拉风的咖菲猫

只需为此编写一个函数。就像是:function get_string($array, $index, $default = null) {    if (isset($array[$index]) && strlen($value = trim($array[$index])) > 0) {        return get_magic_quotes_gpc() ? stripslashes($value) : $value;    } else {        return $default;    }}你可以用作$username = get_string($_POST, 'username');做同样的琐碎的东西一样get_number(),get_boolean(),get_array()等等。

芜湖不芜

我相信解决这个问题的最佳方法之一是通过类访问GET和POST(COOKIE,SESSION等)数组的值。为每个数组创建一个类,声明__get和__set方法(重载)。__get接受一个参数,它将是一个值的名称。此方法应使用isset()或检查相应全局数组中的此值,empty()如果存在,则返回该值,否则返回null(或某些其他默认值)。之后,您可以以这种方式自信地访问数组值:$POST->username如果需要,可以在不使用任何isset()s或empty()s的情况下进行任何验证。如果username在相应的全局数组中不存在null则将返回,因此不会生成警告或通知。
打开App,查看更多内容
随时随地看视频慕课网APP