Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter:实现外部对象(不是模型、视图或控制器的对象)的最佳方法?_Php_Codeigniter_Libraries - Fatal编程技术网

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

Php CodeIgniter:实现外部对象(不是模型、视图或控制器的对象)的最佳方法?,php,codeigniter,libraries,Php,Codeigniter,Libraries,我想向CodeIgniter项目添加一些不是模型、视图或控制器的类。它们很可能是内置的模型/控制器,并以各种方式使用。我应该在哪里存储这些类,在CodeIgniter中实现它们的最佳方法是什么?(或者更一般地说,任何基于MVC的框架?) 编辑:翻阅一些codeIgniter文档,将对象添加到助手似乎是一种方法,对吗 CI不同于许多MVC框架,因为它不会使集成外部库变得困难。一般来说,有两种方法: 只需包含()/require()库并正常使用即可。这在大多数情况下都很好,除非有命名冲突。CI基本上

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


编辑:翻阅一些codeIgniter文档,将对象添加到助手似乎是一种方法,对吗

CI不同于许多MVC框架,因为它不会使集成外部库变得困难。一般来说,有两种方法:

  • 只需包含()/require()库并正常使用即可。这在大多数情况下都很好,除非有命名冲突。CI基本上都不碍事,所以这并不常见。在这种情况下,您可以将库放在任何您喜欢的地方。通常,我会尝试将它们保存在文档根目录之外的共享“libs”目录中,因为我不认为它们只会被CI使用

  • 将库放在应用程序/库中,并使用CI->load()方法加载它们。这对命名约定有一些限制,因此您可能需要对现有库进行处理或编写某种包装构造函数。很好地涵盖了这一点


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

    就个人而言,如果它不可能是一个库,我会将其作为objects\u helper.php放入helpers文件夹,或者在特殊情况下,将其放入调用它的库对象的同一个文件中

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

    $this->factory->createUserObject( $name, $rank, $serial );
    
    最后,您可以研究hooks框架,但听起来您并不是真的想使用它。



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

    我建议将其作为一个库,只使用$this->load->library();欲了解更多信息,请参阅:


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

    从来没有说过它不能成为一个库,但您确实提出了一些好的观点/备选方案。工厂库的想法似乎是可行的。不要将对象放在助手中!!!助手是过程性的,库是对象。