В чем разница между библиотекой и моделью в CodeIgniter Framework? - PullRequest
8 голосов
/ 22 ноября 2010

Я новичок в CI.До этого я много работал в RoR и Symfony.

Я не могу понять, почему именно CI предоставляет библиотеки и модели.Большая часть кода CI, который я исследовал, обычно использует библиотеку как оболочку для Model.Модели хранятся исключительно для общения с базой данных.

Может кто-то пролить свет на это?

Ответы [ 2 ]

19 голосов
/ 22 ноября 2010

Возможно, есть и другие школы мысли об этом, но для меня это выглядит следующим образом:

Модель

Модели тесно связаны с вашим приложением, делая прямые ссылки на схему / архитектуру / пути к файлам БД и т. Д.

Библиотека

Библиотеки слабо связаны. Они должны рассматриваться как сторонние надстройки и не должны делать никаких предположений о вашем приложении или вашей системе. Вы должны иметь возможность «вставлять» библиотеки по желанию с минимальным количеством настроек. На самом деле все должно быть наоборот: элементы в папке вашей библиотеки должны быть помещены в любое другое приложение CI.

1 голос
/ 21 февраля 2018

Бацианская мысль Библиотеки была способом расширения функциональности Codeigniter с помощью классов.

Если сравнить пустую анатомию Library и Модель в Codeigniter, вы увидите, что Модели расширяют CI_MODEL , который позволяет вам получить доступ к собственным ресурсам Codeigniter (например, $ this-> db ).

Библиотеки не предоставляют такого базового доступа, и их также не нужно расширять с помощью CI_MODEL .

Модели созданы для отображения и взаимодействия с данными (в основном абстрагируются от баз данных, таких как mysql).).

Взгляните на базовую библиотеку

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

class Library{

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

}

... и модель анатомию

<?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...
    }
}

В большинстве случаев Модели готовы использовать Ресурсы для доступа к базам данных или другим функциям.Библиотеки нет.Вам необходимо включить или расширить Ressources вручную, если они вам нужны:

//Create an CI instance
$CI =& get_instance();

Библиотеки - это наборы инструментов и расширения функций, тогда как Models изначально идеально подходят для абстрагирования ивзаимодействие с данными, поступающими из баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...