设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 问答求助
›
关于helper中每个函数都得判断存在的疑问 ...
返回列表
查看:
2998
|
回复:
8
[已解决]
关于helper中每个函数都得判断存在的疑问
[复制链接]
kkk
kkk
当前离线
积分
206
IP卡
狗仔卡
发表于 2011-2-14 16:45:35
|
显示全部楼层
|
阅读模式
有个问题想问很久了,就是为什么在所有helper中,都是首先判断函数是否存在?不如form_helper中,截图如下
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
106185050
106185050
当前离线
积分
33
IP卡
狗仔卡
发表于 2011-2-14 17:00:45
|
显示全部楼层
可能是出于防止覆盖吧
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50165
IP卡
狗仔卡
发表于 2011-2-14 18:04:42
|
显示全部楼层
如果这个函数在其他地方已经定义了,这里就会报重定义错误。
报错永远不是好事情~~
评分
参与人数
1
威望
+5
收起
理由
kkk
+ 5
查看全部评分
回复
支持
反对
使用道具
举报
显身卡
kkk
kkk
当前离线
积分
206
IP卡
狗仔卡
楼主
|
发表于 2011-2-14 18:15:29
|
显示全部楼层
回复
3#
Hex
感谢老大的指点,这点我真从未考虑过,只是个人觉得每次都得if(!function_exist){**}是不是有点繁琐?
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50165
IP卡
狗仔卡
发表于 2011-2-14 18:34:34
|
显示全部楼层
为了程序健壮性,这不算繁琐吧。
不这样做我确实遇到过和其他类库冲突的情况,到那时就傻眼了,呵呵
回复
支持
反对
使用道具
举报
显身卡
visvoy
visvoy
当前离线
积分
1342
IP卡
狗仔卡
发表于 2011-2-14 18:58:58
|
显示全部楼层
ci的helper做这个判断是为了重载helper,你看CI_Loader::helper()源码就知道了,
ci会先加载system/helpers里面的文件,然后再加载app下面的helper(如果有)
如果你在app/helpers/url_helper.php自己重新写了一个function site_url()
ci如果不做function_exists判断,那必然就报错了
回复
支持
反对
使用道具
举报
显身卡
kkk
kkk
当前离线
积分
206
IP卡
狗仔卡
楼主
|
发表于 2011-2-14 21:43:23
|
显示全部楼层
回复
6#
visvoy
不仅仅是helper,library、model等都是先从applicant中找没有才开始找system,这点我理解。
万一我是在别的地方(不是system也不是application)定义一个函数,跟helper中的重名了,会不会产生错误呢?这点我没测试过,不过看代码估计理论上不会。
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50165
IP卡
狗仔卡
发表于 2011-2-15 00:38:49
|
显示全部楼层
不会,只要判断了就不会有错误。
回复
支持
反对
使用道具
举报
显身卡
kkk
kkk
当前离线
积分
206
IP卡
狗仔卡
楼主
|
发表于 2011-2-15 09:11:39
|
显示全部楼层
回复
8#
Hex
谢谢Hex(十六进制/魔女)的解答:)
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页