我有一个班级:
class Controller{}
和另外2个班级:
class HomeController extends Controller()
{
public function ActionResult_Index()
{
}
}
class AboutController extends Controller()
{
public function ActionResult_Index()
{
}
}
如果我打电话给$ this-> ActionResult_Index();从Controller类中,将调用哪一个?有没有定义的方法?
答案 0 :(得分:1)
如果从$this->ActionResult_Index()
类中调用Controller
,则会出现致命错误,因为Controller
类没有实现该方法。父母不会继承他们的孩子,反之亦然。
另外:您的extends
语法错误;摆脱基类名称后的()
。
答案 1 :(得分:0)
采取以下示例......
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()
方法,因此您不会得到任何结果(事实上您只会收到错误)。 B
和C
将各自触发该方法的版本。
答案 2 :(得分:0)
由于HomeController
和AboutController
延伸Controller
而HomeController
和AboutController
包含ActionResult_Index
且Controller
不包含{{ 1}}除非您实例化ActionResult_Index
或HomeController
,否则您将无法从AboutController
ActionResult_Index
答案 3 :(得分:0)
$home = new HomeController;
$home->ActionResult_Index();
在上面调用HomeController的ActionResult_Index方法。
$about = new AboutController;
$about->ActionResult_Index();
在上面,调用了AboutController的ActionResult_Index方法。
如果你有:
$controller = new Controller;
$controller->ActionResult_Index();
您将收到未定义的方法错误。控制器类没有该名称的方法。