zoukankan      html  css  js  c++  java
  • php装饰器

    <?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());
    

      

  • 相关阅读:
    2021-5-14 日报博客
    2021-5-13 日报博客
    2021-5-11 日报博客
    2021-5-10 日报博客
    2021-5-8 周报博客
    团队介绍——北部大队
    周总结4
    梦断代码阅读笔记02
    周总结3
    周总结2
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6822182.html
Copyright © 2011-2022 走看看