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()方法。
以上代码无效。有什么帮助吗?
答案 0 :(得分:2)
在HAVING
课程中,您必须为Hello
特质方法创建别名。
sayHello()