Interfaces and Traits
Trait Override
A class method can call a renamed trait method and add class-specific behavior.
Trait Override
trait_override.php
<?php
trait Greets
{
public function greet(string $name): string
{
return "hello " . $name;
}
}
class LoudGreeter
{
use Greets {
greet as baseGreet;
}
public function greet(string $name): string
{
return strtoupper($this->baseGreet($name));
}
}
$name = ;
$greeter = new LoudGreeter();
$message = $greeter->greet($name);
echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
<?php
trait Greets
{
public function greet(string $name): string
{
return "hello " . $name;
}
}
class LoudGreeter
{
use Greets {
greet as baseGreet;
}
public function greet(string $name): string
{
return strtoupper($this->baseGreet($name));
}
}
$name = ;
$greeter = new LoudGreeter();
$message = $greeter->greet($name);
echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
<?php
trait Greets
{
public function greet(string $name): string
{
return "hello " . $name;
}
}
class LoudGreeter
{
use Greets {
greet as baseGreet;
}
public function greet(string $name): string
{
return strtoupper($this->baseGreet($name));
}
}
$name = ;
$greeter = new LoudGreeter();
$message = $greeter->greet($name);
echo "name=" . $name . "\n";
echo "message=" . $message . "\n";
adapted reuse
Trait aliases let a class keep the shared method available while customizing its public method.