用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2450|回复: 3
收起左侧

[已解决] 怎么写漂亮的"引用"

[复制链接]
发表于 2010-12-6 20:00:56 | 显示全部楼层 |阅读模式
我是学 asp.net 的,所以"引用"这个词可能不适合 php

我自己想扩展helper
所以新建了 MY_cookie_helper.php

现在的问题是:
我增加了一个函数 function fcxxx($p1,$p2){},我需要在里边调用 $this->load->library('xxx1')和另外一个  $this->load->helper('xxx2')中的方法,
怎么写代码比较好看啊,我不想在 fcxxx中把control 中的 $this传过来,难看!( $this代表什么)

我看源码里有 $ci= & get_instance(); 这个什么意思 前边的 & 表示什么?

就算我把 control 中的 $this 传过来,如何保证不会 重复 load 同一个helper

不考虑配置 autoload的情况..
发表于 2010-12-6 22:46:10 | 显示全部楼层
呵呵 $this 这是必须带的,你使用一种语言就要遵守这种语言的规则,遵守规则就是“好看”,我和楼主一样,也追求代码的优雅,我觉得 CI 的代码很优雅。

关于 &,这是 PHP 的引用,说白了就是 C 语言的传地址,而不是传值。写 & 是为了兼容 PHP4,PHP5 不需要写,CI 2.0 也会废弃这种写法。关于 & 你可以查询 PHP 手册,有详细说明。

另外,你不用担心重复加载,因为 CI 是单例模式的,所以只会初始化一个实例。
 楼主| 发表于 2010-12-7 10:54:54 | 显示全部楼层
回复 2# Hex

我明白了,按照规矩写就是
应该这样
function fxxx($ci,$p1,$p2){
          $ci->load->helper('hp1');
          //hp1 下的使用
          $ci->load->libarary('lb1');
         //lb1 的使用
}

是这样吗?
发表于 2010-12-7 12:09:09 | 显示全部楼层
如果你的 fxx 是 helper 的话应该这样:
PHP复制代码
function fxxx($p1,$p2){
          $ci =& get_instance();
          $ci->load->helper('hp1');
          //hp1 下的使用
          $ci->load->libarary('lb1');
         //lb1 的使用
}
复制代码

本版积分规则