{ … } } ! trait Email { public function sendMail($message) { … } } ! class User { use Log, Email; public function delete() { $this->log(‘Apagando usuário…’); $this->sendMail(‘Apagando usuário…’); …. } }
} } ! trait Email { public function sendMail($message) { … } } ! trait LogAndSendEmail { use Log, Email; } ! class User { use LogAndSendEmail; public function delete() { $this->log(‘Apagando usuário…’); $this->sendMail(‘Apagando usuário…’); …. } }
… } } ! trait Email { public function sendMail($message) { … } public function log($message) { … } } ! class User { use Log, Email { Log::log insteadof Email; } }
{ echo $this->getPrefix() . $message; } abstract public function getPrefix(); } ! class User { use Log; public function getPrefix() { return ‘[User]: ’; } }
1; } É possível implementar mixins usando traits. ! Cada classe que use esta trait terá uma instância distinta da propriedade (ao contrário da herança).