Determine the name to use instead of the trait's methods
If you have two traits and two traits have a method with the same name, you can specify which one to use.
The keyword insteadof to specify which method to use.
How To Use insteadof
trait trait name{}
class class name
{
use trait name, trait name {
The name of the trait to use :: method name insteadof the name of the trait to disable;
}
}
So let's look at an example..
<?php
trait apple
{
public function phone()
{
return 'iPhone';
}
}
trait samsung
{
public function phone()
{
return 'galaxy';
}
}
class disneyAnimation
{
use apple, samsung {
apple::phone insteadof samsung;
}
}
$disney = new disneyAnimation;
echo "Judith in zootopia ".$disney->phone()." Use it." ;
?>
If you have 3 traits, instead of, write the name of the trait you don't want to use.
insteadof multiple usage
trait trait name{}
class class name
{
use trait name, trait name {
Use trade name ::method name insteadof not be used trade name, not be used trade name;
}
}
Try insteadof in multiples with the following example:
<?php
trait apple
{
public function phone()
{
return 'iPhone';
}
}
trait samsung
{
public function phone()
{
return 'galaxy';
}
}
trait lg
{
public function phone()
{
return 'g';
}
}
class disneyAnimation
{
use apple, samsung, lg {
apple::phone insteadof samsung, lg;
}
}
$disney = new disneyAnimation;
echo "Judith in zootopia ".$disney->phone()." Use it.";
?>
What if you also need to use the phone() method from another trait?
Next time, we'll learn how to use the methods of the same name in different traits.