你可以从CodeIgniter中的另一个模型中访问模型吗?

时间:2008-09-05 17:18:56

标签: php codeigniter authentication model

我正在使用需要身份验证的CodeIgniter编写webapp。我创建了一个处理所有身份验证的模型。但是,我找不到从另一个模型中访问此身份验证模型的方法。有没有办法从另一种模式内部访问模型,或者在CodeIgniter中处理身份验证的更好方法?

4 个答案:

答案 0 :(得分:18)

似乎你可以在模型中加载模型,尽管你可能应该以另一种方式解决这个问题。有关讨论,请参阅CodeIgniter forums

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();
  }
}

另外,我不明白Till所说的不应该在对象内部创建对象。你当然应该!将对象作为参数发送对我来说不太清楚。

答案 1 :(得分:14)

通常,您不希望在对象内创建对象。这是一个坏习惯,而是编写一个清晰的API并将模型注入模型中。

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

答案 2 :(得分:1)

不要在模型中处理身份验证。仅使用模型与数据库或ldap等接口。

我创建了一个用于管理身份验证和授权的Auth库。您可以从控制器访问这样的库。

答案 3 :(得分:1)

现在可以使用新的CodeIgniter在模型中加载模型。