每天laravel-20160819| Container -22

   /**
    * Get the alias for an abstract if available.
    *
    * @param  string  $abstract
    * @return string
    */
   protected function getAlias($abstract)
   {// get Alias ,if has aliases return it ,or return it self
       return isset($this->aliases[$abstract]) ? $this->aliases[$abstract] : $abstract;
   }// Get the alias for an abstract if available.

   /**
    * Get the container‘s bindings.
    *
    * @return array
    */
   public function getBindings()
   {
       return $this->bindings;// return it self like a big _get function
   }

   /**
    * Drop all of the stale instances and aliases.
    *
    * @param  string  $abstract
    * @return void
    */
   protected function dropStaleInstances($abstract)
   {
       unset($this->instances[$abstract], $this->aliases[$abstract]);
   }// drop every thing about the abstract ,
// use the system function unset

   /**
    * Remove a resolved instance from the instance cache.
    *
    * @param  string  $abstract
    * @return void
    */
   public function forgetInstance($abstract)
   {
       unset($this->instances[$this->normalize($abstract)]);
   }// in php ,drop and remove ,all about this use the unset  even forget

   /**
    * Clear all of the instances from the container.
    *
    * @return void
    */
   public function forgetInstances()
   {
       $this->instances = [];
   }// clear all drop remove forget ,this is better then unset(self)

   /**
    * Flush the container of all bindings and resolved instances.
    *
    * @return void
    */
   public function flush()
   {
       $this->aliases = [];
       $this->resolved = [];
       $this->bindings = [];
       $this->instances = [];
   }// flush means to refresh it ,so like empty this alias resolved bindings instances

   /**
    * Set the globally available instance of the container.
    *
    * @return static
    */
   public static function getInstance()
   {
       return static::$instance;// return the $instance not the self instance.
   }

   /**
    * Set the shared instance of the container.
    *
    * @param  \Illuminate\Contracts\Container\Container  $container
    * @return void
    */
   public static function setInstance(ContainerContract $container)
   {
       static::$instance = $container;
   }// set the instance use the container

   /**
    * Determine if a given offset exists.
    *
    * @param  string  $key
    * @return bool
    */
   public function offsetExists($key)
   {
       return isset($this->bindings[$this->normalize($key)]);
   }// determine like check ,
// if has the bindings been set return true

   /**
    * Get the value at a given offset.
    *
    * @param  string  $key
    * @return mixed
    */
   public function offsetGet($key)
   {
       return $this->make($key);// make is too powerful
   }// return it a

   /**
    * Set the value at a given offset.
    *
    * @param  string  $key
    * @param  mixed   $value
    * @return void
    */
   public function offsetSet($key, $value)
   {
       // If the value is not a Closure, we will make it one. This simply gives
       // more "drop-in" replacement functionality for the Pimple which this
       // container‘s simplest functions are base modeled and built after.
       if (! $value instanceof Closure) {
           $value = function () use ($value) {
               return $value;
           };
       }// if the value is a Closure.

       $this->bind($key, $value);// use bind function
   }

   /**
    * Unset the value at a given offset.
    *
    * @param  string  $key
    * @return void
    */
   public function offsetUnset($key)
   {
       $key = $this->normalize($key);

       unset($this->bindings[$key], $this->instances[$key], $this->resolved[$key]);
   }// unset all offset

   /**
    * Dynamically access container services.
    *
    * @param  string  $key
    * @return mixed
    */
   public function __get($key)
   {
       return $this[$key];// a big
   }

   /**
    * Dynamically set container services.
    *
    * @param  string  $key
    * @param  mixed   $value
    * @return void
    */
   public function __set($key, $value)
   {
       $this[$key] = $value; // big set
   }
时间: 2024-10-08 15:48:26

每天laravel-20160819| Container -22的相关文章

laravel容器container 阅读记录

今天抽时间又仔细看了一下laravel的container,记录一下. 所谓容器,听名字就知道,是一个仓库,装东西用的,所以,container所有的功能,都围绕一个主题:管理装. 类名称:Illuminate\Container\Container 首先,生成一个数组绑定列表,用自定义名称作为主键,然后键值是闭包(输入的可能是闭包或者实体类,但是,在存储的时候,都统一转化成了闭包存储). 其次,根据绑定列表,生成对应的类的实例,供用户使用,调用的时候,发现如果已经生成,不需要重新生成使用,实际

[转载]Laravel Container (容器) 深入理解 (下)

本文大部分翻译自 DAVE JAMES MILLER 的 <Laravel's Dependency Injection Container in Depth> . 上文介绍了 Dependency Injection Containers (容器) 的基本概念,现在接着深入讲解 Laravel 的 Container. Laravel 中实现的 Inversion of Control (IoC) / Dependency Injection (DI) Container 非常强悍,但文档中

laravel 入门

Laravel5.0学习--01 入门 本文以laravel5.0.22为例. 生产环境建议使用laravel5.1版本,因为该版本是长期支持版本.5.1文档更详细:http://laravel-china.org/docs/5.1. 环境需求 Laravel5.0 框架有一些系统上的需求: PHP 版本 >= 5.4 Mcrypt PHP 扩展 OpenSSL PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展 在 PHP 5.5 之后, 有些操作系统需要手动安装

Android Design 1: Back键和Up键在App导航中的表现

一,概念 1, Back键一直存在android系统中 1-1 任何页面下的返回 1-2 Floating window 1-3 Contexual Action bar/highlight select 1-4 Keyboard 2, Up键是随Android Design出来的. 2-1 android Design 定义的parent container 2-2 app的主界面是不存在Up键的 二,情景分析 1, App内部 1-1 沿逐级深入路径 Back:按照activity在栈中的顺

fragment 事务回滚 ---动态创建fragment

1 import java.util.Date; 2 import java.util.LinkedList; 3 4 import com.qianfeng.gp08_day23_fragment5.fragment.TestFragment; 5 6 import android.os.Bundle; 7 import android.app.Activity; 8 import android.app.Fragment; 9 import android.app.FragmentTrans

CSS 3 学习——transform 3D转换渲染

以下内容根据官方规范翻译,没有翻译关于SVG变换的内容和关于矩阵计算的内容. 一般情况下,元素在一个无景深无立体感的平面(flat plane)上渲染,这个平面就是其包含块所处的平面.同时,页面上的其他元素也共享这个平面.2D变换函数虽然能改变元素的表现,但是这个被改变的元素仍然是在其包含块所处的平面内被渲染. 3D变换会产生一个变换矩阵,该变换矩阵在Z轴上的分量不为0.结果是把元素渲染到一个不同于其包含块所处的平面内.这将影响到通常情况下的"后来居上"的渲染规则:变换元素可能会和其相

Socket聊天程序——客户端

写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细设计和Common模块记录一下,因为这个周末开始就要去忙其他东西了. 设计: 客户端设计主要分成两个部分,分别是socket通讯模块设计和UI相关设计. 客户端socket通讯设计: 这里的设计其实跟服务端的设计差不多,不同的是服务端是接收心跳包,而客户端是发送心跳包,由于客户端只与一个服务端进行通

DAY2 2016-01-22

在知乎上看到手写div布局的问题就自己动手做了一些尝试,用了两种方法:1)死做:2)Flexbox 方法一:(死做) 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 6 &

From Apprentice To Artisan 翻译 03

The IoC Container 控制反转容器 Basic Binding 基础绑定 Now that we've learned about dependency injection, let's explore inversion of control containers. IoC containers make managing your class dependencies much more convenient, and Laravel ships with a very pow