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

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