-2

我有一堂课:

class Controller{}

和其他2个课程:

class HomeController extends Controller()
{
    public function ActionResult_Index()
    {
    }
}

class AboutController extends Controller()
{
    public function ActionResult_Index()
    {
    }
}

如果我调用 $this->ActionResult_Index(); 从 Controller 类中,将调用哪一个?有没有定义的方法?

4

4 回答 4

1

如果你$this->ActionResult_Index()Controller类中调用,你会得到一个致命错误,因为Controller类没有实现那个方法。父母不会从孩子那里继承,相反。

另外:您的extends语法错误;去掉()基类名称后面的。

于 2013-08-09T09:40:06.823 回答
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每个人都会在那里触发自己的方法版本。

于 2013-08-09T09:38:12.283 回答
0

因为HomeControllerand AboutControllerextends Controllerand contains HomeControllerand not contains除非您实例化否则您将无法从AboutControllerActionResult_IndexControllerActionResult_IndexHomeControllerAboutControllerActionResult_IndexController

于 2013-08-09T09:38:33.273 回答
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();

你会得到一个未定义的方法错误。控制器类没有该名称的方法。

于 2013-08-09T09:39:06.283 回答