Chinaunix首页 | 论坛 | 博客
  • 博客访问: 273292
  • 博文数量: 59
  • 博客积分: 1368
  • 博客等级: 中尉
  • 技术积分: 1071
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-02 06:06
文章分类

全部博文(59)

文章存档

2012年(59)

我的朋友

分类: 系统运维

2012-03-04 02:29:38

在CodeIgniter2.0之后提供了"Packages"程序包的功能,这为CI开发者发布插件提供了便利,因为在2.0之前,如果插件中包含libraries,models,helpers,config和language文件,我们只能放在application目录下的各个文件夹中,因为这些是第三方提供的程序,如果放在这些目录下,不方便管理且容易引起冲突,如果能有单独的一个目录放这些第三方提供的程序,那是再好不过的了,CI2.0则提供了这样的功能。

首先,我们在/application/third_party目录下新建一个文件夹,比如包的名字为Foo Bar
  1. /application/third_party/foo_bar
  2. libraries/
  3. models/
  4. helpers/
  5. config/
  6. language/
"Foo Bar"将有它自己的config,helpers,language,libraries和models,在控制器中使用这些资源之前,我们需要通过添加包的路径告诉加载器我们将从这个包中加载资源,例如上面的例子,我们在控制器中加载Foo Bar包,我们在控制器中:
  1. $this->load->add_package_path(APPPATH.'third_party/foo_bar/');
  2. $this->load->library('foo_bar');
当控制器使用Foo Bar包中的资源结束后,也许你会使用其他包中的中的资源,你想从加载器中删除该包的路径,使得加载器不再从该包的目录下寻找资源,要删除最后添加的包的路径,可以不需要参数删除:
  1. $this->load->remove_package_path();
如果要删除指定的包的路径:
  1. $this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
最后讨论下包里的视图文件,默认情况下,当使用add_package_path()加载包时,包里的视图文件的路径将被添加到视图路径,系统将在各个视图路径中寻找匹配的视图文件,一旦找到,视图将被加载,如果我们希望在使用该包的时候,只使用该包下的视图文件,可以在设置add_package_path()的第二个参数为FALSE
  1. $this->load->add_package_path(APPPATH.'third_party/foo_bar/', FALSE);
这样系统只在该包的目录下寻找视图文件,如果没有找到,将显示出错信息。

阅读(9023) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~