From befdc87b1ce6caf47c6f8b1dfa02333dfee8a950 Mon Sep 17 00:00:00 2001
From: Derek Allard
Date: Tue, 9 Oct 2007 13:25:27 +0000
Subject: Added the ability to auto-load Models
---
system/application/config/autoload.php | 15 +++++++++++++++
system/libraries/Loader.php | 18 ++++++++++++++++++
user_guide/changelog.html | 1 +
user_guide/general/autoloader.html | 1 +
user_guide/general/models.html | 19 ++++++++++---------
5 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/system/application/config/autoload.php b/system/application/config/autoload.php
index 8bb4181b5..2dfbe422c 100644
--- a/system/application/config/autoload.php
+++ b/system/application/config/autoload.php
@@ -23,6 +23,7 @@
| 3. Plugins
| 4. Custom config files
| 5. Language files
+| 6. Models
|
*/
@@ -96,6 +97,20 @@ $autoload['config'] = array();
$autoload['language'] = array();
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Models
+| -------------------------------------------------------------------
+| Prototype:
+|
+| $autoload['model'] = array('model1', 'model2');
+|
+*/
+
+$autoload['model'] = array();
+
+
/*
| -------------------------------------------------------------------
| Auto-load Core Libraries
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 051d3d899..dd639798d 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -107,8 +107,19 @@ class CI_Loader {
*/
function model($model, $name = '', $db_conn = FALSE)
{
+ if (is_array($model))
+ {
+ foreach($model as $babe)
+ {
+ $this->model($babe);
+ }
+ return;
+ }
+
if ($model == '')
+ {
return;
+ }
// Is the model in a sub-folder? If so, parse out the filename and path.
if (strpos($model, '/') === FALSE)
@@ -855,6 +866,12 @@ class CI_Loader {
}
}
+ // Autoload models
+ if (isset($autoload['model']))
+ {
+ $this->model($autoload['model']);
+ }
+
// A little tweak to remain backward compatible
// The $autoload['core'] item was deprecated
if ( ! isset($autoload['libraries']))
@@ -875,6 +892,7 @@ class CI_Loader {
// Load the model class.
if (in_array('model', $autoload['libraries']))
{
+ die('made it in!');
$this->model();
$autoload['libraries'] = array_diff($autoload['libraries'], array('model'));
}
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index fdd870a9a..eb2e3ef7a 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -66,6 +66,7 @@ Change Log
Release Date: -- still in development
- Added Flashdata variables, session_id regeneration and configurable session update times to the Session class.
+ - Added the ability to auto-load Models
- Added $this->DB->save_queries variable to DB driver, enabling queries to get saved or no. Previously they were always saved.
- Added $assign_to_controller variable in the main index.php file. Anything that this variable contains will be passed automatically to a controller constructor when initialized.
- Reorganized the URI and Routes classes for better clarity.
diff --git a/user_guide/general/autoloader.html b/user_guide/general/autoloader.html
index 55b3c0d38..c90120cc8 100644
--- a/user_guide/general/autoloader.html
+++ b/user_guide/general/autoloader.html
@@ -74,6 +74,7 @@ consider auto-loading them for convenience.
Plugins found in the "plugins" folder
Custom config files found in the "config" folder
Language files found in the "system/language" folder
+Models found in the "models" folder
To autoload resources, open the application/config/autoload.php file and add the item you want
diff --git a/user_guide/general/models.html b/user_guide/general/models.html
index f2a676188..b111eacca 100644
--- a/user_guide/general/models.html
+++ b/user_guide/general/models.html
@@ -70,13 +70,13 @@ Models
What is a Model?
Anatomy of a Model
Loading a Model
+Auto-Loading a Model
Connecting to your Database
-
-
-What is a Model?
+
+What is a Model?
Models are PHP classes that are designed to work with information in your database. For example, let's say
you use CodeIgniter to manage a blog. You might have a model class that contains functions to insert, update, and
@@ -124,8 +124,8 @@ class Blogmodel extends Model {
Note: The functions in the above example use the Active Record database functions.
-
-Anatomy of a Model
+
+Anatomy of a Model
Model classes are stored in your application/models/ folder. They can be nested within sub-folders if you
want this type of organization.
@@ -161,8 +161,8 @@ class User_model extends Model {
application/models/user_model.php
-
-Loading a Model
+
+Loading a Model
Your models will typically be loaded and called from within your controller functions.
To load a model you will use the following function:
@@ -207,10 +207,11 @@ class Blog_controller extends Controller {
}
}
+Auto-loading Models
+If you find that you need a particular model globally throughout your application, you can tell CodeIgniter to auto-load it during system initialization. This is done by opening the application/config/autoload.php file and adding the mdoel to the autoload array.
-
-Connecting to your Database
+Connecting to your Database
When a model is loaded it does NOT connect automatically to your database. The following options for connecting are available to you:
--
cgit v1.2.3-24-g4f1b