Traits are a mechanism for code reuse in single inheritance languages such as PHP.
With traits, you can share code across multiple independent classes, which are in the different inheritance hierarchy.
How to enable code reuse in different classes.
Let’s pretend we have some classes related to log
, we need to log usage activity.
Method 1: We can add a new Class Logger
,it's methods include createlogfile()
,openlogfile()
,log()
. for convenience,we just use log()
in the demo.
The problem is: each time we write a log record,we have to initialize an instance of class.
<?php class Logger{ public function log($msg) { echo date('Y-m-d h:i:s')."-".$msg."<br>"; } } class User{ public function login() { $logger = new Logger(); $logger -> log('User Login'); } public function logout() { $logger = new Logger(); $logger -> log('User Logout'); } } class BankAccount{ public function deposit() { $logger = new Logger(); $logger -> log('BankAccount deposit'); } public function withdraw() { $logger = new Logger(); $logger -> log('BankAccount withdraw'); } } class Stock{ private $totalFunds; } class TradeRecord extends Stock{ public function deal() { $logger = new Logger(); $logger -> log('TradeRecord deal'); } } $user = new User(); $user -> login(); $bankaccount = new BankAccount(); $bankaccount -> deposit(); $traderecord = new TradeRecord(); $traderecord -> deal(); $bankaccount -> withdraw(); $user -> logout(); ?>
Outputs:
2017-10-06 06:43:53-User Login 2017-10-06 06:43:53-BankAccount deposit 2017-10-06 06:43:53-TradeRecord deal 2017-10-06 06:43:53-BankAccount withdraw 2017-10-06 06:43:53-User Logout
The problem is the struct is more complex and the code become tightly.
<img src="data:image/png;base64,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