Welcome Guest, Not a member yet? Register   Sign In
Does a model require that you extend the base model class?
#7

[eluser]xwero[/eluser]
This is the model class
Code:
class Model {

    var $_parent_name = '';

    /**
     * Constructor
     *
     * @access public
     */
    function Model()
    {
        // If the magic __get() or __set() methods are used in a Model references can't be used.
        $this->_assign_libraries( (method_exists($this, '__get') OR method_exists($this, '__set')) ? FALSE : TRUE );
        
        // We don't want to assign the model object to itself when using the
        // assign_libraries function below so we'll grab the name of the model parent
        $this->_parent_name = ucfirst(get_class($this));
        
        log_message('debug', "Model Class Initialized");
    }

    /**
     * Assign Libraries
     *
     * Creates local references to all currently instantiated objects
     * so that any syntax that can be legally used in a controller
     * can be used within models.  
     *
     * @access private
     */    
    function _assign_libraries($use_reference = TRUE)
    {
        $CI =& get_instance();                
        foreach (array_keys(get_object_vars($CI)) as $key)
        {
            if ( ! isset($this->$key) AND $key != $this->_parent_name)
            {            
                // In some cases using references can cause
                // problems so we'll conditionally use them
                if ($use_reference == TRUE)
                {
                    // Needed to prevent reference errors with some configurations
                    $this->$key = '';
                    $this->$key =& $CI->$key;
                }
                else
                {
                    $this->$key = $CI->$key;
                }
            }
        }        
    }

}
You see the Model constructor does a check if the model is already loaded or not so it doesn't get loaded more than once. This is the reason why you extend the model class otherwise you have to add this code to all your models which are in that case classes you put in the models directory.

If the model class didn't have a role it would be silly to extend it.


Messages In This Thread
Does a model require that you extend the base model class? - by El Forum - 03-14-2008, 07:46 AM



Theme © iAndrew 2016 - Forum software by © MyBB