andybeak
1/12/2017 - 11:05 AM

Trait name conflict resolution

Trait name conflict resolution

<?php

trait Dog
{
    public function wantWalkies()
    {
        echo "Yes please!";
    }
}

trait Cat
{
    public function wantWalkies()
    {
        echo "No thanks";
    }
}

class Animal
{
    use Cat, Dog {
        Dog::wantWalkies as protected doggyWalk;

        // Dog::wantWalkies as protected insteadof Cat;   // This does not work
        Dog::wantWalkies insteadof Cat;
        Dog::wantWalkies as protected;
    }
}

$object = new Animal;

$object->doggyWalk();

$object->wantWalkies();