在CodeIgniter2.0之后提供了"Packages"程序包的功能,这为CI开发者发布插件提供了便利,因为在2.0之前,如果插件中包含libraries,models,helpers,config和language文件,我们只能放在application目录下的各个文件夹中,因为这些是第三方提供的程序,如果放在这些目录下,不方便管理且容易引起冲突,如果能有单独的一个目录放这些第三方提供的程序,那是再好不过的了,CI2.0则提供了这样的功能。
首先,我们在/application/third_party目录下新建一个文件夹,比如包的名字为Foo Bar
- /application/third_party/foo_bar
-
libraries/
-
models/
-
helpers/
-
config/
-
language/
"Foo Bar"将有它自己的config,helpers,language,libraries和models,在控制器中使用这些资源之前,我们需要通过添加包的路径告诉加载器我们将从这个包中加载资源,例如上面的例子,我们在控制器中加载Foo Bar包,我们在控制器中:
- $this->load->add_package_path(APPPATH.'third_party/foo_bar/');
-
$this->load->library('foo_bar');
当控制器使用Foo Bar包中的资源结束后,也许你会使用其他包中的中的资源,你想从加载器中删除该包的路径,使得加载器不再从该包的目录下寻找资源,要删除最后添加的包的路径,可以不需要参数删除:
- $this->load->remove_package_path();
如果要删除指定的包的路径:
- $this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
最后讨论下包里的视图文件,默认情况下,当使用add_package_path()加载包时,包里的视图文件的路径将被添加到视图路径,系统将在各个视图路径中寻找匹配的视图文件,一旦找到,视图将被加载,如果我们希望在使用该包的时候,只使用该包下的视图文件,可以在设置add_package_path()的第二个参数为FALSE
- $this->load->add_package_path(APPPATH.'third_party/foo_bar/', FALSE);
这样系统只在该包的目录下寻找视图文件,如果没有找到,将显示出错信息。
阅读(9023) | 评论(0) | 转发(0) |