首页 > Web开发 > 详细

php装饰器

时间:2017-05-07 20:46:14      阅读:193      评论:0      收藏:0      [点我收藏+]
<?php

/*
 * 用一个类来装饰另一个类,动态的给一个对象增加一些额外功能,这些功能一般是在这个对象调用方法前或方法后
 * 比如我们要给User类增加一个登陆日志的功能
 */

// 抽象构件
abstract class Component
{
    abstract public function login($time);
}


// user类
class User extends Component
{
    private $login_time;

    public function login($time)
    {
        $this->login_time = $time;
    }


}


// 装饰器
class LogDecorate extends Component
{
    private $user;
    private $time;
    /**
     * Log constructor.
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function login($time)
    {
        $this->user->login($time);
        $this->log($time);
    }

    public function log($time)
    {
        echo sprintf("Log: login %d",$time) . PHP_EOL;
    }

}

$user = new User();
$log = new LogDecorate($user);
$log->login(time());

  

php装饰器

原文:http://www.cnblogs.com/itfenqing/p/6822182.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!