laravel 中 IOC容器与依赖注入小demo

来源:互联网 发布:容易猝死的职业知乎 编辑:程序博客网 时间:2024/06/05 18:37
<?php//laravel  IOC容器 与依赖注入/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */class Container {    private $container = [];    public function bind($name, Closure $c) {        $this->container[$name] = $c($this);    }    public function get($name, $params=[]) {        if (isset($this->container[$name])) {            return $this->container[$name];        }        return call_user_func($this->container[$name], $params);        //return $this->container[$name]($this); //赋予当前container上下文    }}class Config {    public $env = 'config s  test';    public function __construct(Container $container) {          }    public function getConfig() {        return 'config...config';    }}class Request {    private $config;    public function __construct($container) {        $this->config = $container->get('config');    }    public function getConfig() {       echo   $this->config->getConfig();    }}$container = new Container;$container->bind('config', function ($container) {    return new Config($container);});//request module$container->bind('request', function ($container) {    return new Request($container);});$container->get('request')->getConfig();

0 0
原创粉丝点击