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