好吧,你有几个选择:
应用程序“包”
应用程序包允许在单个目录中轻松分发完整的资源集,包括自己的库、模型、帮助程序、配置和语言文件。建议将这些包放在 application/third_party 文件夹中。
无论使用该/third_party
目录的建议如何,这可以是您选择的任何目录。
以下是名为“Foo Bar”的应用程序包的目录示例。/application/third_party/foo_bar
配置/
帮手/
语/
图书馆/
楷模/
无论“Foo Bar”应用程序包的用途是什么,它都有自己的配置文件、帮助程序、语言文件、库和模型。要在控制器中使用这些资源,您首先需要通过添加包路径告诉加载器您将从包中加载资源。$this->load->add_package_path()
添加包路径会指示 Loader 类为后续资源请求添加给定路径。例如,上面的“Foo Bar”应用程序包有一个名为 Foo_bar.php 的库。在我们的控制器中,我们将执行以下操作:
$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
$this->load->library('foo_bar');
加载程序的文档解释了完整的详细信息:http: //codeigniter.com/user_guide/libraries/loader.html
再一次,这里是 Phil Sturgeon 的另一篇文章,它可以帮助您了解它是如何工作的:http: //philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules
这里的想法是您将拥有第三个“应用程序”文件夹(您的“包”),它将用作加载资源的后备,同时允许您通过在其他任何一个应用程序中放置一个匹配的文件来覆盖该文件,因此,您可以获得共享资源的好处,并且可以灵活地覆盖它们 *.
* 这是我阅读文档时的假设,我没有对此进行测试,因此可能还有更多内容。
您可能希望将包目录放在其他两个应用程序文件夹旁边,并以MY_Controller::__construct()
如下方式引用它:
$this->load->add_package_path(FCPATH.'my_package_name/');
我自己还没有使用过包,但是在写完这篇文章之后——我很想在我的下一个项目中检查它。