zoukankan      html  css  js  c++  java
  • [PHP] 项目实践中使用的IOC容器思想

    1.容器的意思就是一个全局变量,里面存了很多对象,如果要用到某个对象就从里面取,前提就是要先把对象放进去
    2.控制反转就是把自己的控制权交给别人
    3.这两个结合就是,把自己的控制权交给别人并且创建的对象放进一个全局变量里
    4.好处就是可以灵活的修改一个对象的属性,而不需要去修改类本身的代码

    项目实践:
    1.Application对象的resources属性数组就是那个容器
    2.getResource方法就是控制生成对象的方法,生成一个对象的控制权交给了Application
    3.这里先简化的规定下,自定义的类必须有createResource静态方法来创建自己这个对象

    class Application{
        private $resources= array();
        public function getResource($class,$params) {
            if (!isset($this->resources[$class])) {
                $this->resources[$class] = call_user_func_array(array($class, 'createResource'), $params);
            }   
            return $this->resources[$class];
        }   
    }
    
    class User {
        private $name;
        private $age;
        public function __construct($name,$age){
            $this->name=$name;
            $this->age=$age;
        }   
        public static function createResource($name,$age) {
            return new self($name,$age);
        }   
        public function says(){
            echo $this->name;
        }   
    }
    $app=new Application();
    $user=$app->getResource("User",array("taoshihan","1000"));
    $user->says();
  • 相关阅读:
    新手建站必看
    88.com域名邮箱免费注册了
    屏蔽博客园的广告
    跳过烦人的hCaptcha验证
    pap.er 专为 Mac 设计的壁纸应用
    TrafficMonitor
    利用CloudFlare自动DDNS
    P.SDA1.DEV
    谷歌浏览器又隐藏的HTTPS和WWW前缀
    谷歌浏览器扩展 crx 下载
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11423263.html
Copyright © 2011-2022 走看看