Maison > Article > développement back-end > Explication détaillée de l'exemple de code du mode de décoration PHP
Expliquez en détail l'exemple de code du mode de décoration PHP
<?php // 装饰模式 function echoLine($msg) { echo $msg, '<br/>'; } class RequestHelper { /** * return class resource id */ public function toString() { ob_start(); var_dump($this); $str = ob_get_clean(); if (preg_match('/object\(' . CLASS . '\)\#\d+/', $str, $matches)) { return $matches[0]; } return CLASS; } } // --------------------------------------------------------- interface ProcessRequest { public function process(RequestHelper $req); } /** * http request */ class HttpRequest implements ProcessRequest { public function process(RequestHelper $req) { echoLine('Process http request[' . $req . ']'); } } /** * Log Decorator * add log function */ class LogRequest implements ProcessRequest { protected $pr; public function construct(ProcessRequest $pr) { $this->pr = $pr; } public function process(RequestHelper $req) { echoLine('Add log function!'); $this->pr->process($req); } } /** * Authenticate Decorator * add authenticate function */ class AuthenticateRquest implements ProcessRequest { protected $pr; public function construct(ProcessRequest $pr) { $this->pr = $pr; } public function process(RequestHelper $req) { echoLine('Add authenticate function!'); $this->pr->process($req); } } // test code $req = new RequestHelper(); $process = new HttpRequest(); // add log $process = new LogRequest($process); // add auth $process = new AuthenticateRquest($process); // process request $process->process($req);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!