设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 问答求助
›
CI自定义适配器最佳实践
返回列表
查看:
3766
|
回复:
4
[讨论/交流]
CI自定义适配器最佳实践
[复制链接]
rebill
rebill
当前离线
积分
34
IP卡
狗仔卡
发表于 2011-6-17 13:47:07
|
显示全部楼层
|
阅读模式
本帖最后由 rebill 于 2011-6-17 14:53 编辑
看了手册(
http://codeigniter.org.cn/user_guide/general/creating_drivers.html
),于是决定自己动手测试一下。
根据手册的描述。我们按以下步骤来测试:
1.创建目录:
/application/libraries/Video
2.创建Driver:
/application/libraries/Video/Video.php
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
class
Video
extends
CI_Driver_Library
{
protected
$valid_drivers
=
array
(
'video_youku'
,
'video_tudou'
)
;
protected
$_adapter
;
public
function
__construct
(
$config
=
array
(
)
)
{
if
(
!
empty
(
$config
)
)
{
$this
->
_initialize
(
$config
)
;
}
}
private
function
_initialize
(
$config
)
{
$this
->
_adapter
=
$config
[
'adapter'
]
;
}
public
function
get
(
$id
)
{
return
$this
->
{
$this
->
_adapter
}
->
get
(
$id
)
;
}
public
function
__get
(
$child
)
{
return
parent
::
__get
(
$child
)
;
}
}
复制代码
3.创建Adater:
/application/libraries/Video/dirvers/
Video_
youku.php
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
class
Video_youku
extends
CI_Driver
{
public
function
__construct
(
)
{
}
public
function
get
(
$id
)
{
return
'Testing'
.
$id
;
}
}
复制代码
4.调用
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
class
Test
extends
CI_Controller
{
public
function
__construct
(
)
{
parent
::
__construct
(
)
;
$this
->
load
->
driver
(
'video'
,
array
(
'adapter'
=>
'youku'
)
)
;
}
public
function
index
(
)
{
echo
$this
->
video
->
get
(
123
)
;
}
}
复制代码
评分
参与人数
1
威望
+5
收起
理由
lamtin
+ 5
赞一个!
查看全部评分
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
xyst0524
xyst0524
当前离线
积分
378
IP卡
狗仔卡
发表于 2011-7-2 18:08:38
|
显示全部楼层
The child classes, the drivers themselves, can then be called directly through the parent class, without initializing them:
$this->some_parent->child_one->some_method();
$this->some_parent->child_two->another_method();
那这段呢?可以直接调用自己的子类吗?怎么实现这个呀
回复
支持
反对
使用道具
举报
显身卡
baiyuxiong
baiyuxiong
当前离线
积分
3505
IP卡
狗仔卡
发表于 2011-7-13 00:33:06
|
显示全部楼层
适配器的价值在哪里?有什么用呢
回复
支持
反对
使用道具
举报
显身卡
hebaijun
hebaijun
当前离线
积分
57
IP卡
狗仔卡
发表于 2011-7-22 11:50:39
|
显示全部楼层
适配器模式使得一个类可以同时使用两个基础类的功能,跳出了单纯继承的限制。有效的重用多各类。
回复
支持
反对
使用道具
举报
显身卡
baiyuxiong
baiyuxiong
当前离线
积分
3505
IP卡
狗仔卡
发表于 2011-7-22 15:11:40
|
显示全部楼层
通过config指定要调用的实现?
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页