How to resolve a property name conflict when a class uses two Traits with homonymous properties?
Example:
<?php
trait Video {
public $name = 'v';
}
trait Audio {
public $name = 'a';
}
class Media {
use Audio, Video;
}
$media = new Media();
$media->name;
I've tried insteadof (Video::name insteadof Audio) and (Video::name as name2) without success.
Thanks in advance !
You can't, its for methods only.
However they may use the same property name only if the value is the same:
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'
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With