我有一个类:
class Controller{}
和2个其他类别:
class HomeController extends Controller()
{
public function ActionResult_Index()
{
}
}
class AboutController extends Controller()
{
public function ActionResult_Index()
{
}
}
如果我调用$this->ActionResult_Index();从Controller类中,将调用哪一个?有没有一种定义的方法?
如果从Controller
类中调用$this->ActionResult_Index()
,则会出现致命错误,因为Controller
类没有实现该方法。父母不会从孩子那里继承遗产,相反。
此外:您的extends
语法错误;去掉基类名称后面的()
。
举下面的例子。。。
class A {
}
class B extends A {
public function boo()
{
return 'B';
}
}
class C extends A {
public function boo()
{
return 'C';
}
}
$a = new A;
$b = new B;
$c = new C;
$a->boo(); // Undefined method
$b->boo(); // B
$c->boo(); // C
由于A
没有boo()
方法,所以您不会得到任何结果(实际上您只会得到一个错误)。CCD_ 8和CCD_。
由于HomeController
和AboutController
扩展了Controller
和HomeController
,并且AboutController
包含ActionResult_Index
,而Controller
不包含ActionResult_Index
,除非实例化HomeController
或AboutController
,否则您将无法从Controller
访问ActionResult_Index
$home = new HomeController;
$home->ActionResult_Index();
在上面的例子中,调用了HomeController的ActionResult_Index方法。
$about = new AboutController;
$about->ActionResult_Index();
在上面的例子中,调用了AboutController的ActionResult_Index方法。
如果您有:
$controller = new Controller;
$controller->ActionResult_Index();
您将得到一个未定义的方法错误。控制器类没有该名称的方法。