Question

I am writing a webapp using CodeIgniter that requires authentication. I created a model which handles all my authentication. However, I can't find a way to access this authentication model from inside another model. Is there a way to access a model from inside another mode, or a better way to handle authentication inside CodeIgniter?

Was it helpful?

Solution

In general, you don't want to create objects inside an object. That's a bad habit, instead, write a clear API and inject a model into your model.

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>

OTHER TIPS

It seems you can load models inside models, although you probably should solve this another way. See CodeIgniter forums for a discussion.

class SomeModel extends Model
{
  function doSomething($foo)
  {
    $CI =& get_instance();
    $CI->load->model('SomeOtherModel','NiceName',true);

    // use $CI instead of $this to query the other models
    $CI->NiceName->doSomethingElse();
  }
}

Also, I don't understand what Till is saying about that you shouldn't create objects inside objects. Of course you should! Sending objects as arguments looks much less clear to me.

Don't handle authentication in your model. Only use models to interface with your database, or ldap or whatever.

I created an Auth library that I use to manage authentication and authorization. You can access a library like this from your controllers.

Loading a model within a model is now possible with the new CodeIgniter.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top