Функция вызова Codeigniter во вложенном контроллере extends - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть MY_Controller php файл с классом MY_Controller и Other_Controller, который расширяет класс My_Controller в моей папке application/core.

class MY_Controller extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
    }
    function SomeMethod()
    {
        echo "method MY_Controller";
    }
}
class Other_Controller extends My_Controller 
{
    function __construct()
    {
       parent::__construct();
    }
}

В моей папке Application/controller:

    Class Main extends Other_Controller
    { include(APPPATH.'core/Other_Controller.php');
        function __construct()
        {
            parent::__construct();
            // Call SomeMethod function name?
        }
    }

Можно ли вызвать функцию SomeMethod с MY_Controller на главный контроллер?

1 Ответ

0 голосов
/ 12 декабря 2018

Да, вы можете просто использовать parent ключевое слово так же, как вы используете его с конструктором:

class Main extends Other_Controller
{
    function __construct()
    {
        parent::__construct();
        parent::SomeMethod(); // echoes "method MY_Controller"
    }
}

В случае Other_Controller переопределение класса MY_Controller::SomeMethodвы по-прежнему можете вызывать исходный SomeMethod из класса Main, используя полное имя класса и оператор разрешения области действия :::

class MY_Controller extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
    }

    function SomeMethod()
    {
        echo "method MY_Controller";
    }
}

class Other_Controller extends My_Controller 
{
    function __construct()
    {
       parent::__construct();
    }

    function SomeMethod()
    {
        echo "method Other_Controller";
    }
}

class Main extends Other_Controller
{
    function __construct()
    {
        parent::__construct();
        parent::SomeMethod(); // echoes "method Other_Controller"
        MY_Controller::SomeMethod(); // echoes "method MY_Controller"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...