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

有帮助吗?

解决方案

一般来说,您不想在对象内创建对象。这是一个坏习惯,相反,编写一个清晰的 API 并将模型注入到您的模型中。

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

其他提示

看来您可以在模型内部加载模型,尽管您可能应该以另一种方式解决这个问题。看 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();
  }
}

另外,我不明白蒂尔所说的“不应该在对象内创建对象”是什么意思。当然你应该!对我来说,将对象作为参数发送似乎不太清楚。

不要在模型中处理身份验证。仅使用模型与数据库、LDAP 等进行交互。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top