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