嵌套扩展控制器中的Codeigniter调用函数



我有一个MY_Controllerphp文件,其中包含MY_Controller类和Other_Controller,它扩展了我的application/core文件夹中的My_Controller类。

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?
}
}

我可以从MY_Controller向主控制器调用SomeMethod函数吗?

是的,您可以简单地使用parent关键字,就像您在构造函数中使用它一样:

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

如果Other_Controller类覆盖MY_Controller::SomeMethod,您仍然可以使用完整类名和作用域解析运算符:::从Main类调用原始SomeMethod

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"
}
}

最新更新