PHP:如何从父类调用子类的函数

2022-08-30 08:37:13

如何从父类调用子类的函数?请考虑以下情况:

class whale
{
  function __construct()
  {
    // some code here
  }

  function myfunc()
  {
  // how do i call the "test" function of fish class here??
  }
}

class fish extends whale
{
  function __construct()
  {
    parent::construct();
  }

  function test()
  {
    echo "So you managed to call me !!";
  }

}

答案 1

这就是抽象类的用途。一个抽象类基本上是说:无论谁从我这里继承,都必须有这个函数(或这些函数)。

abstract class whale
{

  function __construct()
  {
    // some code here
  }

  function myfunc()
  {
    $this->test();
  }

  abstract function test();
}


class fish extends whale
{
  function __construct()
  {
    parent::__construct();
  }

  function test()
  {
    echo "So you managed to call me !!";
  }

}


$fish = new fish();
$fish->test();
$fish->myfunc();

答案 2

好吧,这个答案已经很晚了,但是为什么没有人想到这一点呢?

Class A{
    function call_child_method(){
        if(method_exists($this, 'child_method')){
            $this->child_method();
        }
    }
}

该方法在扩展类中定义:

Class B extends A{
    function child_method(){
        echo 'I am the child method!';
    }
}

因此,使用以下代码:

$test = new B();
$test->call_child_method();

输出将为:

I am a child method!

我用它来调用钩子方法,这些方法可以由子类定义,但不必如此。


推荐