久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

yii2行為的方法如何注入到組件類中詳解

這篇文章主要給大家介紹了關于yii2中行為的方法是如何注入到組件類中去的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友

前言

當了解了行為屬性的注入邏輯后,方法的注入對于我們來說就很簡單了。邏輯一樣。只不過此刻我們不再調用 __get 方法,而是一個用于方法的 __call 方法。下面話不多說了,來一起看看詳細的介紹:

在研究之前先跟我學習兩個PHP的知識:

  • __call
  • call_user_func_array

__call

__call 是 PHP 的一個魔術方法,這個方法和 __get 功能差不多,當發現一個類的方法未定義時會觸發此函數,它有兩個參數

public mixed __call ( string $name , array $arguments )

$name 參數是要調用的方法名稱。$arguments 參數是一個枚舉數組,包含著要傳遞給方法 $name 的參數,舉個例子

class User {
 public function __call($name, $arguments) {
   echo "Calling object method '$name' "
     . implode(', ', $arguments). "\n";
 }
}

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

看懂了么,貼個官方文檔地址 傳送門

call_user_func_array

調用回調函數,并把一個數組參數作為回調函數的參數。先貼個官方文檔地址 傳送門 ,舉個例子再。

class User {
 function Hello($arg) {
  echo __METHOD__, " got $arg\n";
 }
}

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

OK,在你了解了這兩個函數后,我們開始研究行為方法的注入。

方法如何注入

說來蠻簡單,就一個方法

// vendor/yiisoft/yii2/base/Component.php
public function __call($name, $params){

 $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 調用此行為的方法

最后達到和組件調用自己的方法一樣的效果。

總結

到現在我們知道如何配置行為、行為運行、行為注入原理,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對的支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

下面小編就為大家分享一篇快速解決PHP調用Word組件DCOM權限的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
Yii2的rule用于對模型屬性進行驗證,scenario用戶定義不同場景下需要驗證的模型,下面這篇文章主要給大家介紹了關于Yii2中場景(scenario)和驗證規則(rule)的相關資料,文中通過示例代碼介
本篇文章主要介紹了淺談使用 Yii2 AssetBundle 中 $publishOptions 的正確姿勢,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這篇文章主要介紹了Yii2之組件的注冊與創建的實現方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
這篇文章主要介紹了Yii2使用駝峰命名的形式訪問控制器的實現方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家帶來一篇Yii2使用駝峰命名的形式訪問控制器(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 欧区一欧区二欧区三免费 | 91社区在线观看高清 | 亚洲网站在线观看 | 亚洲一区在线播放 | 午夜精品一区二区三区在线视频 | 国产精品亚洲一区二区三区在线观看 | 亚洲精品二区 | 久久久久久国产精品 | 国产国拍亚洲精品av | 久久久精品一区二区三区 | 午夜激情视频在线 | 欧美一级特黄aaa大片在线观看 | 一区二区三区视频在线免费观看 | 仙人掌旅馆在线观看 | 久久av资源网 | 2023亚洲天堂 | 九九99九九精彩46 | 亚洲精品乱码久久久久久按摩观 | 日韩在线免费视频 | 国产男人的天堂 | 在线观看午夜视频 | 国产精品亚洲一区 | 伊人手机在线视频 | 99精品国产一区二区三区 | 亚洲综合视频 | 人人鲁人人莫人人爱精品 | 综合在线视频 | 91精品国产综合久久久久久丝袜 | 成人久久久| 天天拍天天色 | 国产激情视频网站 | 精品国产一区久久 | 男女污污动态图 | 亚洲综合色丁香婷婷六月图片 | 精品久久久久久久久亚洲 | 中文字幕精品一区 | 免费福利视频一区二区三区 | 久久久久国产一区二区三区四区 | 亚洲国产精品久久久久秋霞不卡 | 日本一区二区不卡 | 久久久久久国产 |