根据几天来的尝试,发现PHP的Notice机制在特定的情况下会触发。
1、无法确定变量类型时。
2、数组Key值未预定义。
在上面情况的基础上,下面第一种情况会触发未定义Notice,其他情况则保持静默。
第一种:
if($test)
会先判断数据类型,若无法确定,则一直往代码上层追溯,显示Notice错误代码位置。
第二种:
if(empty($test))
会略过直接类型判断,只判断$test数值,即使$test未定义,也不会报Notice。
所以,在代码构建过程中,尽量不要使用不可控的方式,如if($test)这种方式就非常危险。
同时,在function内部,要对返回值有足够的控制,包括数据类型和数值的控制。
若该function直接返回一个未定义的$return_value,则上层调用该function的代码就会很尴尬,稍微不注意(有些人会直接采用if($test)的方式调用),就会产生Notice,这在大型Web底层框架的设计中是非常致命的。
Tips:PHP不会在代码构建中报错,而会在关键判断点时报错。
优美的代码格局是一个人基本的审美素养,将不可控变为可控,这是每个程序员必修的课程。
kearney 写于 2012.9.14