CodeIgniter:实现外部对象(不是模型,视图或控制器的对象)的最佳方法?

时间:2010-03-05 15:45:57

标签: php codeigniter libraries

我想在CodeIgniter项目中添加一些不是模型,视图或控制器的类。它们很可能是内置的模型/控制器,并以各种方式使用。我应该在哪里存储这些类,以及在CodeIgniter中实现它们的最佳方法是什么? (或者更一般地说,任何基于MVC的框架?)。

编辑:查看一些codeIgniter文档,看起来将对象添加到帮助程序是可行的方法,这是正确的吗?

3 个答案:

答案 0 :(得分:9)

CI与许多MVC框架不同,因为它不会使集成外部库变得具有挑战性。通常,有几种方法:

  1. 只需包含()/ require()库并正常使用它。除非存在命名冲突,否则大部分时间都可以正常工作。 CI大部分都不在路上,所以这并不常见。在这种情况下,您可以将库放在任何您想要的位置。通常我会尝试将它们保存在文档根目录之外的共享“libs”目录中,因为我不认为它们只会被CI使用。

  2. 将您的库放在您的应用程序/库中,并使用CI-> load()方法加载它们。这对命名约定提出了一些限制,因此您可能需要按摩现有库或编写某种包装器构造函数。 The CI docs on creating libraries很好地涵盖了这一点。

  3. 就个人而言,我更喜欢第一种方法。这是使用CI的好处之一。

答案 1 :(得分:2)

就个人而言,如果它不可能是一个库,我会将它作为objects_helper.php放在helpers文件夹中,或者在特殊情况下放在与调用它的Library对象相同的文件中。

您也可以查看对象工厂库,以便使用以下内容:

$this->factory->createUserObject( $name, $rank, $serial );

最后,您可以查看钩子框架,但听起来并不像真的想要使用它。


如果你认为在任何其他情况下(从代码/哲学角度来看)没有意义,我只会使用require / include。在可能的情况下,在框架内通常是一个好主意。

答案 2 :(得分:1)

我建议将其设为库,只需使用$ this-> load-> library();要阅读更多内容,请参阅:http://codeigniter.com/user_guide/general/creating_libraries.html

库和助手之间存在差异。如果外部库不是面向对象的,那么你会希望它作为帮助器,如果是,那么你应该能够使它成为一个没有问题的库。