我想向 CodeIgniter 项目中添加一些不是模型、视图或控制器的类。它们很可能是内置的模型/控制器并以各种方式使用。我应该在哪里存储这些类,在 CodeIgniter 中实现它们的最佳方法是什么?(或者更一般地说,任何基于 MVC 的框架?)。
编辑:查看一些 codeIgniter 文档,看起来将对象添加到帮助程序是要走的路,对吗?
我想向 CodeIgniter 项目中添加一些不是模型、视图或控制器的类。它们很可能是内置的模型/控制器并以各种方式使用。我应该在哪里存储这些类,在 CodeIgniter 中实现它们的最佳方法是什么?(或者更一般地说,任何基于 MVC 的框架?)。
编辑:查看一些 codeIgniter 文档,看起来将对象添加到帮助程序是要走的路,对吗?
CI 与许多 MVC 框架的不同之处在于它不会使集成外部库变得具有挑战性。一般来说,有几种方法:
只需 include()/require() 库并正常使用即可。这在大多数情况下都可以正常工作,除非存在命名冲突。CI 大多不碍事,所以这并不常见。在这种情况下,您可以将库放在您喜欢的任何位置。通常我会尝试将它们保存在文档根目录之外的共享“libs”目录中,因为我不认为它们只会被 CI 使用。
将您的库放入您的应用程序/库中并使用 CI->load() 方法加载它们。这对命名约定施加了一些限制,因此您可能需要修改现有库或编写某种包装构造函数。关于创建库的 CI 文档很好地涵盖了这一点。
就个人而言,我更喜欢第一种方法。这是使用 CI 的好处之一。
就个人而言,如果它不可能是一个库,我会将它作为 objects_helper.php 放在 helpers 文件夹中,或者在特殊情况下,与调用它的 Library 对象放在同一个文件中。
您还可以查看对象工厂库,以便可以使用以下内容:
$this->factory->createUserObject( $name, $rank, $serial );
最后,您可以查看 hooks 框架,但这听起来不像您真的想使用它。
如果您认为在任何其他情况下(从代码/哲学角度)没有意义,我只会使用 require/include。尽可能在框架内工作通常是一个好主意。
我建议将其设为库并仅使用 $this->load->library(); 要阅读更多信息,请参阅:http ://codeigniter.com/user_guide/general/creating_libraries.html
库和助手之间是有区别的。如果外部库不是面向对象的,那么您将希望它作为助手,如果是,那么您应该能够毫无问题地使其成为一个库。