PHP特性:如何解决属性名称冲突?

cel*_*owm 4 php oop traits

当一个类使用两个具有同名属性的特性时,如何解决属性名称冲突?

例:

<?php

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


trait Audio {

    public $name = 'a';
}


class Media {
    use Audio, Video;
}

$media = new Media();
$media->name;
Run Code Online (Sandbox Code Playgroud)

我已经尝试代替(Video :: name代替Audio)和(Video :: name as name2)成功了。

提前致谢 !

Xor*_*lse 5

您不能,仅用于方法。
但是,只有在值相同的情况下,它们才可以使用相同的属性名称:

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'
  }
}
Run Code Online (Sandbox Code Playgroud)