使模块的功能可以在另一个模块中访问(Codeigniter)

时间:2014-03-21 16:13:03

标签: module codeigniter-2

我有Module_One,其函数是exampleOne()...

class Model_One extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }

    function exampleOne(){
        return "test";
    }
}

我想知道如何(如果可能的话),在Model_Two中调用Model_One ......

class Model_Two extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }

    function exampleTwo(){
        return "testTwo";
    }
}

我可以调用Model_Two并使用Model_One的exampleOne()。

class Controller_One extends CI_Controller{

    function index(){
        $this->load->model('Model_Two');
        $this->Model_Two->exampleOne();
    }
}









我知道我可以这样做......

class Model_One extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }

    function exampleOne(){
        return "test";
    }
}

等......

class Model_Two extends CI_Model {

    function __construct()
    {
        parent::__construct();
        $this->load->model('Model_One');
    }

    function exampleTwo(){
        return "testTwo";
    }

    function exampleOne2(){         
        $this->Model_One->exampleOne();
    }
}

等......

class Controller_One extends CI_Controller{

    function index(){
        $this->load->model('Model_Two');
        $this->Model_Two->exampleOne2();
    }
}



但是,冗余创建一个函数来调用另一个函数,我知道它必须有另一种方法来做到这一点,但我不知道,并没有发现任何事情。任何想法?

感谢您的关注

1 个答案:

答案 0 :(得分:1)

是的,编程应该干(不要重复自己)。

对于您的情况,请尝试以下代码:

class Model_Two extends CI_Model {

    function __construct()
    {
        parent::__construct();
        $this->load->model('Model_One');
    }

    function exampleTwo(){
        return "testTwo";
    }

    // change this method to the name of the another module
    function model_one(){

        // just return the new model object
        // so you can keep using all method in this object, without repeat the methods
        return $this->Model_One;
    }
}

在您的控制器中,您使用如下的model_two模型:

class Controller_One extends CI_Controller{

    function index(){
        $this->load->model('Model_Two');
        $this->Model_Two->model_one()->exampleOne();

        // and here you can use all method from model_one...
        // $this->Model_Two->model_one()->exampleTwo();
    }
}

我希望对你有所帮助。 :)