2017-01-16 64 views
2

如何解決屬性名稱衝突當一個類使用兩個traits 同名屬性PHP特質:如何解決屬性名稱衝突?

例子:

<?php 

trait Video { 
    public $name = 'v'; 
} 


trait Audio { 

    public $name = 'a'; 
} 


class Media { 
    use Audio, Video; 
} 

$media = new Media(); 
$media->name; 

我試圖與其使用(視頻::名稱與其使用音頻),並沒有成功(視頻::名名2)。

在此先感謝!

回答

3

你不能,它的方法只。
但是,只有當值相同時,它們纔可以使用相同的屬性名稱:

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' 
    } 
}