¿Cuál es la diferencia entre la biblioteca y el modelo en el marco CodeIgniter?

Soy nuevo en CI. Antes había trabajado mucho en RoR y Symfony.

No puedo entender por qué CI proporciona bibliotecas y modelos exactamente. La mayoría del código CI que examiné usaba generalmente Library como Wrapper around Model. Los modelos se mantienen exclusivamente para hablar con la base de datos.

¿Puede alguien arrojar luz sobre esto?

Probablemente hay otras escuelas de pensamiento sobre esto, pero para mí es como sigue:

Modelos

Los modelos se acoplan estrechamente a su aplicación, haciendo referencias directas a su esquema de DB / architecture / rutas de archivo, etc.

Bibliotecas

Las bibliotecas están ligeramente acopladas. Deben ser tratados como complementos de terceros y no deben hacer suposiciones sobre su aplicación o su sistema. Debería poder “colocar” bibliotecas a voluntad con una cantidad mínima de configuración. De hecho, lo contrario debe ser cierto, los elementos de la carpeta de su biblioteca deben poder colocarse en cualquier otra aplicación de CI.

El pensamiento básico en las bibliotecas era una manera de extender la funcionalidad de Codeigniter a través de las clases.

Si compara la anatomía en blanco de una biblioteca y un modelo en Codeigniter, verá que los modelos extienden el CI_MODEL que le permite acceder a los recursos nativos de Codeigniter (por ejemplo, $ this-> db ).

Las bibliotecas no ofrecen ese acceso básico y tampoco necesitan extenderse a través de CI_MODEL .

Los modelos están diseñados para representar e interactuar con datos (en su mayoría, extraídos de bases de datos como mysql).

Echa un vistazo a la biblioteca básica

 

... y la anatomía del modelo

  

En la mayoría de los casos, los modelos están preparados para usar recursos para acceder a bases de datos u otras funcionalidades. Las bibliotecas no lo hacen. Debe incluir o ampliar los recursos manualmente si los necesita:

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

Las bibliotecas son colecciones de herramientas y extensiones de funciones, mientras que los modelos son idealmente nativos para abstraer e interactuar con datos provenientes de bases de datos.