親クラスの中で小クラスでオーバーライドした関数や変数を使いたいとき

class parent
{
  const test = 1;
  public function test()
  {
    echo self::test
  }
}

class child extends parent
{
  const test = 2;
}

$hoge = new child;
$hoge->test();

ってやると 1 が出力されちゃう。
これを 2 を出したいときは

class parent
{
  const test = 1;
  public function test()
  {
    echo constant(get_called_class().'::test')
  }
}

class child extends parent
{
  const test = 2;
}

$hoge = new child;
$hoge->test();

ってやってあげると 2 が出る。
定数なら constant 使えばいいし
関数なら call_user_func 使えばOK(call_user_func(get_called_class().'::sendMail', $test) ッて感じ)