设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 进阶讨论
›
CI 1.7 控制器必须知道的问题
返回列表
查看:
4657
|
回复:
3
[控制器]
CI 1.7 控制器必须知道的问题
[复制链接]
ares333
ares333
当前离线
积分
392
IP卡
狗仔卡
发表于 2011-1-21 20:12:13
|
显示全部楼层
|
阅读模式
我只看了Base5.php
代码比较简单
PHP
复制代码
class
CI_Base
{
private
static
$instance
;
public
function
CI_Base
(
)
{
self
::
$instance
=&
$this
;
}
public
static
function
&
get_instance
(
)
{
return
self
::
$instance
;
}
}
function
&
get_instance
(
)
{
return
CI_Base
::
get_instance
(
)
;
}
复制代码
以前总以为是单例模式,仔细看了一下不是,如果想根据控制器扩展一些东西的话可要注意了(比如扩展HMVC)
每new一个控制器然后调用 get_instance()就会返回不同的控制器
例:
随便找个action
$this->a='aaa';
$ci= &get_instance();
echo $ci->a;
exit;
输出aaa
$this->a='aaa';
$n=new Controller();
$n->a='ccc';
$ci= &get_instance();
echo $ci->a;
exit;
输出ccc
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
Hex
Hex
当前离线
积分
50167
IP卡
狗仔卡
发表于 2011-1-21 21:08:26
|
显示全部楼层
CI 确实是单例模式,这毫无疑问,全局只允许有一个控制器,不存在 new 很多控制器的情况。
扩展 HMVC 属于另外的问题,并且,new 的是一个模块,而不是控制器。
回复
支持
反对
使用道具
举报
显身卡
ares333
ares333
当前离线
积分
392
IP卡
狗仔卡
楼主
|
发表于 2011-1-23 16:42:36
|
显示全部楼层
举个例子,
我想弄一个头部导航条,当然这只是个例子,导航条一般不这么用,但是有些功能可能这么用比较好
导航条我这么来弄,写个library
class Nav extends Controller{
function nav(){
parent::Controller();
}
function get_nav(){
$data=array();
.....
return $this->load->view('someview',$data);
}
}
然后在主控制器中可以得到导航条
$this->load->library('nav');
$nav_str=$this->nav->get_nav();
补充:
这么做有这么几个特点
1.不必使用万能的&get_instance()
2.这个控制器和主控制器是并行的,级别上没有大小之分
3.这个控制器和主控制器的唯一区别就是不会自动被调用
但是这要注意一个问题了,$this->load->library('nav');一旦调用&get_instance()指向的对象就变了,如果在这之后不用这个函数就没有问题。
单例模式new不出对象。
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50167
IP卡
狗仔卡
发表于 2011-1-23 20:44:49
|
显示全部楼层
楼上的想法不错,不过这就像楼上说的,可能会造成混乱,这就是为什么 CI 的类库都不会从控制器继承的原因。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页