关于helper中每个函数都得判断存在的疑问
有个问题想问很久了,就是为什么在所有helper中,都是首先判断函数是否存在?不如form_helper中,截图如下可能是出于防止覆盖吧 如果这个函数在其他地方已经定义了,这里就会报重定义错误。
报错永远不是好事情~~ 回复 3# Hex
感谢老大的指点,这点我真从未考虑过,只是个人觉得每次都得if(!function_exist){**}是不是有点繁琐? 为了程序健壮性,这不算繁琐吧。
不这样做我确实遇到过和其他类库冲突的情况,到那时就傻眼了,呵呵 ci的helper做这个判断是为了重载helper,你看CI_Loader::helper()源码就知道了,
ci会先加载system/helpers里面的文件,然后再加载app下面的helper(如果有)
如果你在app/helpers/url_helper.php自己重新写了一个function site_url()
ci如果不做function_exists判断,那必然就报错了 回复 6# visvoy
不仅仅是helper,library、model等都是先从applicant中找没有才开始找system,这点我理解。
万一我是在别的地方(不是system也不是application)定义一个函数,跟helper中的重名了,会不会产生错误呢?这点我没测试过,不过看代码估计理论上不会。 不会,只要判断了就不会有错误。 回复 8# Hex
谢谢Hex(十六进制/魔女)的解答:)
页:
[1]