PHP-черты: как разрешить конфликт имен свойств?

Как разрешить конфликт имен свойств, когда класс использует две черты с одноименными свойствами?

Пример:

<?php

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


trait Audio {

    public $name = 'a';
}


class Media {
    use Audio, Video;
}

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

Я пробовал вместо этого (Video:: name вместо Audio) и (Video:: name as name2) без успеха.

Спасибо заранее!

Ответ 1

Вы не можете, его только для методов.
Однако они могут использовать одно и то же имя свойства, только если значение одно и то же:

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