I could extend CI_Model, I suppose, but why would I do this? The class doesn't look especially feature-rich. All it does is write a log message when constructed and then define a __get magic method that refers to the CodeIgniter singleton. I could be completely missing something, but I wonder why I would want to have my DataObjects coughing up properties of the CI singleton object as if those properties were its own? What happens when my DataObject defines a property that already belongs to the CI singleton?
Code:
class CI_Model {
/**
* Class constructor
*
* @return void
*/
public function __construct()
{
log_message('debug', 'Model Class Initialized');
}
// --------------------------------------------------------------------
/**
* __get magic
*
* Allows models to access CI's loaded classes using the same
* syntax as controllers.
*
* @param string $key
*/
public function __get($key)
{
// Debugging note:
// If you're here because you're getting an error message
// saying 'Undefined Property: system/core/Model.php', it's
// most likely a typo in your model code.
return get_instance()->$key;
}
}