PHP Traits:如何解决属性名称冲突?
当一个类使用具有同名属性的两个Traits时如何解决属性名称冲突?
例:
<?php
trait Video {
public $name = 'v';
}
trait Audio {
public $name = 'a';
}
class Media {
use Audio, Video;
}
$media = new Media();
$media->name;
我试过(视频::名称而不是音频)和(视频::名称为name2),但没有成功。
提前致谢 !
你不能,仅限于它的方法。
但是,只有当值相同时,它们才可以使用相同的属性名称:
trait Video {
public $name;
function getName(){
return 'Video';
}
}
trait Audio {
public $name;
function getName(){
return 'Audio';
}
}
class Media {
use Audio, Video {
Video::getName insteadof Audio;
}
function __construct(){
$this->name = $this->getName(); // 'Video'
}
}
链接地址: http://www.djcxy.com/p/11903.html