Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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 - Fatal编程技术网

Php CodeIgniter框架中的库和模型有什么区别?

Php CodeIgniter框架中的库和模型有什么区别?,php,codeigniter,Php,Codeigniter,我是新来的。在此之前,我曾在RoR和Symfony广泛工作 我无法理解为什么CI提供了库和模型。我检查的大多数CI代码通常将库用作模型的包装器。模型专门用于与数据库对话 有人能解释一下吗 关于这一点,可能还有其他的思想流派,但对我来说,是这样的: 模型 模型与应用程序紧密耦合,直接引用数据库模式/体系结构/文件路径等 图书馆 库是松散耦合的。他们应该被视为第三方附加组件,不应该对你的应用程序或系统做出任何假设。您应该能够使用最少的配置随意“插入”库。事实上,恰恰相反,您的库文件夹中的项目应该能够

我是新来的。在此之前,我曾在RoR和Symfony广泛工作

我无法理解为什么CI提供了库和模型。我检查的大多数CI代码通常将库用作模型的包装器。模型专门用于与数据库对话


有人能解释一下吗

关于这一点,可能还有其他的思想流派,但对我来说,是这样的:

模型 模型与应用程序紧密耦合,直接引用数据库模式/体系结构/文件路径等

图书馆
库是松散耦合的。他们应该被视为第三方附加组件,不应该对你的应用程序或系统做出任何假设。您应该能够使用最少的配置随意“插入”库。事实上,恰恰相反,您的库文件夹中的项目应该能够被放入任何其他CI应用程序。

basci对库的想法是通过类扩展Codeigniter功能的一种方法

如果比较Codeigniter中的<强>库< /St>和<强>模型<强>的空白解剖结构,您将看到模型扩展<强> CiIOME < <强> >,这允许您访问CODEIGITITER的本地资源(例如$$->dB)。

图书馆不提供这种基本访问,也不需要通过CI_模型扩展它们

模型用于描述数据并与数据交互(主要是从数据库(如mysql)中提取)

查看基本

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Library{

   public function MyFunction(){
      //do something...
   }

}

是工具集合和功能扩展,而模型天生非常适合抽象和与来自数据库的数据交互。

关于您对库的看法,我认为上述功能是通过“模块”实现的在CI中。@Akshar有时在概念上有一些重叠,但库可以被认为是一个基本上(如果不是完全)独立于特定CI应用程序的单例类。对于如何使用库没有严格的规则,但是如果您想了解库应该做什么,请查看一些本机CI库,如image_lib。
<?php defined('BASEPATH') OR exit('No direct script access allowed');

class User_model extends CI_Model {

   public function __construct(){
        parent::__construct();            
    }

    public function MyFunction(){
        //do something...
    }
}
//Create an CI instance
$CI =& get_instance();