您的位置:首页 > 编程语言 > PHP开发

每天laravel-20160817| Container -20

2016-05-30 09:46 453 查看
/**
* Register a new resolving callback by type of its first argument.
*
* @param  \Closure  $callback
* @return void
*/
// Register a new resolving callback by type of its first argument
protected function resolvingCallback(Closure $callback)
{
$abstract = $this->getFunctionHint($callback);// get the abstract function

if ($abstract) {// if get the abstract function set in
$this->resolvingCallbacks[$abstract][] = $callback;// one is abstract function
} else {
$this->globalResolvingCallbacks[] = $callback;// other set in the global Resolving Call backs
}
}

/**
* Register a new after resolving callback by type of its first argument.
*
* @param  \Closure  $callback
* @return void
*/
protected function afterResolvingCallback(Closure $callback)
{
$abstract = $this->getFunctionHint($callback);// get the result

if ($abstract) {
$this->afterResolvingCallbacks[$abstract][] = $callback;// one is in the abstract
} else {
$this->globalAfterResolvingCallbacks[] = $callback;
}
}

/**
* Get the type hint for this closure's first argument.
*
* @param  \Closure  $callback
* @return mixed
*/
// hint is type  or a way
protected function getFunctionHint(Closure $callback)
{
$function = new ReflectionFunction($callback);// get the new Reflection Function

if ($function->getNumberOfParameters() == 0) {
return;
}// if $function

$expected = $function->getParameters()[0];

if (! $expected->getClass()) {// getClass
return;
}

return $expected->getClass()->name;// get the class name.
}
// sorry ,this too easy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: