如果两个方法名称相同,如何从使用该特征的类方法调用特征方法?

时间:2017-01-17 19:22:53

标签: php traits

trait World {

    public function sayHello()
    {
        echo "World!";
    }
}

abstract class AbstractHello{}

class Hello extends AbstractHello {
    use World;

    public function sayHello()
    {
        echo "Hello";
        $this->sayHello(); // calling its not working
    }
}

class Hello2 extends AbstractHello {
    use World;
}

现在如果我打电话如下,它应该显示“HelloWorld!”

$h = new Hello();
$h->sayHello();

如果如下调用,则应显示“世界!”

$h = new Hello2();
$h->sayHello();

我不想使用as运算符更改traits方法名称,因为已经从Hello2等子类的其他位置调用了sayHello()方法。

以上代码无效。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

HAVING课程中,您必须为Hello特质方法创建别名。

sayHello()