2

我目前正在使用 CodeIgniter 及其 HMVC 开展一个项目。http://jenssegers.be/projects/CodeIgniter-HMVC-Modules )

我有一个关于在不同模块中加载模型的最佳方法的一般性问题。到目前为止,我认为直接在不同的模块中加载模型会违反 MVC 规则,并通过在模型的所有者控制器中创建函数来间接访问模型。

例如,

class A
{
    function __construct()
    {
        ....
        $this->load->model('Model_A');
    }
    function getUsers()
    {
        $this->Model_A->getUsers();
        return $users;
    }
}

Class B
{
    ....
    function getModelAUsers()
    {
        $users_from_A = Modules::run('A/getUsers');  // This is currently how I do

        $this->load->model('A/Model_A'); // This is probably how I could do.
        $users_from_A = $this->Model_A->getUsers(); 
    }
}

老实说,创建​​单独的函数来访问这样的模型是一件很痛苦的事……而且我编码的越多,我就越难重构它。在 MVC 风格的不同模块中访问模型的正确方法是哪种?还是有另一种最好的方法来做到这一点?

还有一件事。该项目将进行大量重构和频繁更新。

4

1 回答 1

1

我遇到了同样的问题,最后决定在需要时在模型中加载模型。这并不反对 MVC,因为 MVC 更多的是关于数据流,而不是包括(加载)在内的系统组件。“通常”(没有 CI)你会使用类自动加载(http://www.php.net/manual/en/language.oop5.autoload.php),而 Codeigniter 不支持模型中的这种加载模型不是罪。

还需要注意的是,即使您多次加载某个模型,Codeigniter 也会忽略它。因此,即使您两次加载某个模型,也不会发生任何不好的事情。

于 2014-02-03T16:57:31.657 回答