码迷,mamicode.com
首页 > 其他好文 > 详细

每天laravel-20160811| Container -14

时间:2016-05-20 14:48:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:no tag

   /**
    * Get the proper reflection instance for the given callback.
    *
    * @param  callable|string  $callback
    * @return \ReflectionFunctionAbstract
    */
   protected function getCallReflector($callback)// function name is getCallReflectior
   {// has a way to get the right reflection instance about the given callback.
       if (is_string($callback) && strpos($callback, ‘::‘) !== false) {
           $callback = explode(‘::‘, $callback);
       }// check the callback string is a string , and has the "::" then
    // explode it to the #callback array();

       if (is_array($callback)) {
           return new ReflectionMethod($callback[0], $callback[1]);
       }// if is a array , net this reflection Method

       return new ReflectionFunction($callback);// third: back the Reflection Function
   }

   /**
    * Get the dependency for the given call parameter.
    *
    * @param  \ReflectionParameter  $parameter
    * @param  array  $parameters
    * @param  array  $dependencies
    * @return mixed
    */
// Get the dependency for the given call parameter.
   protected function addDependencyForCallParameter(ReflectionParameter $parameter, array &$parameters, &$dependencies)
   {// function name is funny
       if (array_key_exists($parameter->name, $parameters)) {// first
           $dependencies[] = $parameters[$parameter->name];// if has this array()
         // bad logic
           unset($parameters[$parameter->name]);// unset the array value by key
       } elseif ($parameter->getClass()) {// second
        // if can get something by  this function
           $dependencies[] = $this->make($parameter->getClass()->name);// can be use by
       } elseif ($parameter->isDefaultValueAvailable()) {// third
           $dependencies[] = $parameter->getDefaultValue();// set the dependencies
       }
   }// so in the end.
// we find the function has a action to set the dependendcies by all the parameter

   /**
    * Call a string reference to a class using Class@method syntax.
    *
    * @param  string  $target
    * @param  array  $parameters
    * @param  string|null  $defaultMethod
    * @return mixed
    *
    * @throws \InvalidArgumentException
    */
   protected function callClass($target, array $parameters = [], $defaultMethod = null)
   {// Call a string reference to a class using
    // class@method syntax
       $segments = explode(‘@‘, $target);// change string to array

       // If the listener has an @ sign, we will assume it is being used to delimit
       // the class name from the handle method name. This allows for handlers
       // to run multiple handler methods in a single class for convenience.
       $method = count($segments) == 2 ? $segments[1] : $defaultMethod;
    // set the default method is null, are you joke,
    // they said, if the string include the @ variable
    // we will delimit
    // maybe it support the multiple handler,

       if (is_null($method)) {
           throw new InvalidArgumentException(‘Method not provided.‘);
       }// throw  Exception

       return $this->call([$this->make($segments[0]), $method], $parameters);//if everthing is ok then call it
   }


本文出自 “专注php” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1775281

每天laravel-20160811| Container -14

标签:no tag

原文地址:http://jingshanls.blog.51cto.com/3357095/1775281

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!