加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

yii2行为的方法如何注入到组件类中详解

发布时间:2021-03-09 04:02:38 所属栏目:编程 来源:网络整理
导读:媒介 当相识了举动属性的注入逻辑后,要领的注入对付我们来说就很简朴了。逻辑一样。只不外而今我们不再挪用 __get 要领,而是一个用于要领的 __call 要领。下面话不多说了,来一路看看具体的先容: 在研究之前先跟我进修两个PHP的常识: __call call_user_f

媒介

当相识了举动属性的注入逻辑后,要领的注入对付我们来说就很简朴了。逻辑一样。只不外而今我们不再挪用 __get 要领,而是一个用于要领的 __call 要领。下面话不多说了,来一路看看具体的先容:

在研究之前先跟我进修两个PHP的常识:

  • __call
  • call_user_func_array

__call

__call 是 PHP 的一个把戏要领,这个要领和 __get 成果差不多,当发明一个类的要领未界说时会触发此函数,它有两个参数

$name 参数是要挪用的要领名称。$arguments 参数是一个列举数组,包括着要转达给要领 $name 的参数,举个例子

// do it
$model = new User();
$model->hello("abei2017");// Calling object method 'hello' abei2017

看懂了么,贴个官方文档地点

call_user_func_array

挪用回调函数,并把一个数组参数作为回调函数的参数。先贴个官方文档地点 ,举个例子再。

$model = new User();
call_user_func_array([$model,"Hello"],["abei2017"]); // User::Hello got abei2017

OK,在你相识了这两个函数后,我们开始研究举动要领的注入。

要领怎样注入

说来蛮简朴,就一个要领

$this->ensureBehaviors();
foreach ($this->_behaviors as $object) {
if ($object->hasMethod($name)) {
return call_user_func_array([$object,$name],$params);
}
}
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

逻辑很简朴

  • 行使 $this->ensureBehaviors(); 函数确保全部举动到位。
  • 遍历组件当前的举动,并判定举动工具此要领是否存在。
  • 假如存在则通过 call_user_func_array 挪用此举动的要领

最后到达和组件挪用本身的要领一样的结果。

总结

到此刻我们知道怎样设置举动、举动运行、举动注入道理,以上就是这篇文章的所有内容了,但愿本文的内容对各人的进修可能事变能带来必然的辅佐,假若有疑问各人可以留言交换,感谢各人对编程之家的支持。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读