我们可以从CodeIgniter中的另一个模型内部访问一个模型吗?

时间:2020-03-05 18:48:22  来源:igfitidea点击:

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

解决方案

回答

通常,我们不想在对象内部创建对象。取而代之的是,这是一个坏习惯,而是编写一个清晰的API并将模型注入模型中。

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

回答

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

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

回答

似乎可以在模型内部加载模型,尽管我们可能应该用另一种方法解决。请参阅CodeIgniter论坛以进行讨论。

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在说什么我们不应该在对象内部创建对象。当然应该!对我来说,将对象作为参数发送似乎不太清楚。