Loading... <?php // php 中的匿名类 举例应用中的框架 需要 logger 日志打印 // 首先有应用类 /** * * @property Cache $cache * @author Administrator * */ class App { /** * * @var Log */ public $logger; /** * * @return the $logger */ public function getLogger(): Log { return $this->logger; } /** * * @param Log $logger */ public function setLogger(Log $logger) { $this->logger = $logger; } /** * * @return the $cache */ public function getCache(): Cache { return $this->cache; } /** * * @param Cache $cache */ public function setCache(Cache $cache) { $this->cache = $cache; } } // 然后就是 日志类的接口规范 interface Log { /** * * @param string $msg * @return string */ public function getLogMsg(string $msg): string; } // 缓存规范接口 interface Cache { public function write(string $key, string $val): bool; public function read(string $key): string; } $app = new App(); // php 实现匿名类 $app->setLogger(new class() implements Log { /** * * {@inheritdoc} * * @see Log::getLogMsg() */ public function getLogMsg(string $msg): string { // TODO Auto-generated method stub return $msg; } }); echo ($app->getLogger()->getLogMsg("jll")); //jllstring $app->setCache(new class() implements Cache { public $map = []; /** * * {@inheritdoc} * * @see Cache::write() */ public function write(string $key, string $val): bool { // TODO Auto-generated method stub $this->map[$key] = $val; return true; } /** * * {@inheritdoc} * * @see Cache::read() */ public function read(string $key): string { // TODO Auto-generated method stub return $this->map[$key]; } }); $app->cache->write("weng", "miaomiao"); var_dump($app->cache->read("weng")); //miaomiao 最后修改:2019 年 09 月 05 日 09 : 54 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付