Inheritance: use trait A, use trait B
Ejemplo n.º 1
0
<?php

trait A
{
    public function say()
    {
        echo "Hello";
    }
}
trait B
{
    use A {
        A::say as fala;
    }
}
class Talker
{
    use B;
}
$talker = new Talker();
$talker->fala();
?>

Ejemplo n.º 2
0
    {
        echo 'a';
    }
    public function bigTalk()
    {
        echo 'A';
    }
}
trait B
{
    public function smallTalk()
    {
        echo 'b';
    }
    public function bigTalk()
    {
        echo 'B';
    }
}
class Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
$t = new Talker();
$t->smallTalk();
$t->bigTalk();
$t->talk();
Ejemplo n.º 3
0
{
    public function smallTalk()
    {
        echo 'b' . "\n";
    }
    public function bigTalk()
    {
        echo 'B' . "\n";
    }
}
class Talker
{
    use A, B {
        A::smallTalk insteadof B;
        B::bigTalk insteadof A;
    }
}
class Aliased_Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
$oAT = new Aliased_Talker();
echo $oAT->bigTalk();
echo $oAT->smallTalk();
$oT = new Talker();
echo $oT->smallTalk();
echo $oT->bigTalk();
Ejemplo n.º 4
0
<?php

trait English
{
    public function say()
    {
        echo "Banana\n";
    }
}
trait Portugues
{
    use English {
        English::say as fala;
    }
}
trait Italiano
{
    use Portugues {
        Portugues::fala as parla;
    }
}
class Talker
{
    use Italiano;
}
$talker = new Talker();
$talker->say();
$talker->fala();
$talker->parla();
Ejemplo n.º 5
0
        $m = $n - 1;
        $this->bigTalk($m);
    }
}
trait B
{
    public function smallTalk()
    {
        echo "b\n";
    }
    public function bigTalk($n)
    {
        if ($n == 0) {
            return;
        }
        echo "B{$n}\n";
        $this->bigTalk($n - 1);
    }
}
class Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as bTalk;
    }
}
$talker = new Talker();
$talker->smallTalk();
$talker->bigTalk(1);
$talker->bTalk(2);
Ejemplo n.º 6
0
}
trait B
{
    public function smallTalk()
    {
        echo "b";
    }
    public function bigTalk()
    {
        echo "B";
    }
}
class Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
    }
}
class Aliasd_Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
$first = new Talker();
$second = new Aliasd_Talker();
$first->smallTalk();
$second->talk();
Ejemplo n.º 7
0
class Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
    }
}
class Aliased_Talker
{
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
$a = new Talker();
$a->smallTalk();
// expecting 'b'
$a->bigTalk();
//expecting 'A'
echo PHP_EOL;
$a = new Aliased_Talker();
$a->smallTalk();
// expecting 'b'
$a->bigTalk();
// expecting 'A'
$a->talk();
// expecting 'B'
echo PHP_EOL;
trait HelloWorld
{