亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程應用 > 正文

Laravel實現構造函數自動依賴注入的方法

2020-03-22 18:44:16
字體:
來源:轉載
供稿:網友
本文實例講述了Laravel實現html' target='_blank'>構造函數自動依賴注入的方法。分享給大家供大家參考,具體如下:在Laravel的構造函數中可以實現自動依賴注入,而不需要實例化之前先實例化需要的類,如代碼所示:namespace Lio/Http/Controllers/Forum;use Lio/Forum/Replies/ReplyRepository;use Lio/Forum/Threads/ThreadCreator;use Lio/Forum/Threads/ThreadCreatorListener;use Lio/Forum/Threads/ThreadDeleterListener;use Lio/Forum/Threads/ThreadForm;use Lio/Forum/Threads/ThreadRepository;use Lio/Forum/Threads/ThreadUpdaterListener;use Lio/Http/Controllers/Controller;use Lio/Tags/TagRepository;class ForumThreadsController extends Controller implements ThreadCreatorListener, ThreadUpdaterListener, ThreadDeleterListener protected $threads; protected $tags; protected $currentSection; protected $threadCreator; public function __construct( ThreadRepository $threads, ReplyRepository $replies, TagRepository $tags, ThreadCreator $threadCreator $this- threads = $threads; $this- tags = $tags; $this- threadCreator = $threadCreator; $this- replies = $replies;注意構造函數中的幾個類型約束,其實并沒有地方實例化這個Controller并把這幾個類型的參數傳進去,Laravel會自動檢測類的構造函數中的類型約束參數,并自動識別是否初始化并傳入。源碼vendor/illuminate/container/Container.php中的build方法:$constructor = $reflector- getConstructor();dump($constructor);這里會解析類的構造函數,在這里打印看:它會找出構造函數的參數,再看完整的build方法進行的操作:public function build($concrete, array $parameters = []) // If the concrete type is actually a Closure, we will just execute it and // hand back the results of the functions, which allows functions to be // used as resolvers for more fine-tuned resolution of these objects. if ($concrete instanceof Closure) { return $concrete($this, $parameters); $reflector = new ReflectionClass($concrete); // If the type is not instantiable, the developer is attempting to resolve // an abstract type such as an Interface of Abstract Class and there is // no binding registered for the abstractions so we need to bail out. if (! $reflector- isInstantiable()) { $message = "Target [$concrete] is not instantiable."; throw new BindingResolutionContractException($message); $this- buildStack[] = $concrete; $constructor = $reflector- getConstructor(); // If there are no constructors, that means there are no dependencies then // we can just resolve the instances of the objects right away, without // resolving any other types or dependencies out of these containers. if (is_null($constructor)) { array_pop($this- buildStack); return new $concrete; $dependencies = $constructor- getParameters(); // Once we have all the constructor's parameters we can create each of the // dependency instances and then use the reflection instances to make a // new instance of this class, injecting the created dependencies in. $parameters = $this- keyParametersByArgument( $dependencies, $parameters $instances = $this- getDependencies( $dependencies, $parameters array_pop($this- buildStack); return $reflector- newInstanceArgs($instances);具體從容器中獲取實例的方法:protected function resolveClass(ReflectionParameter $parameter) try { return $this- make($parameter- getClass()- name); // If we can not resolve the class instance, we will check to see if the value // is optional, and if it is we will return the optional parameter value as // the value of the dependency, similarly to how we do this with scalars. catch (BindingResolutionContractException $e) { if ($parameter- isOptional()) { return $parameter- getDefaultValue(); throw $e;框架底層通過Reflection反射為開發節省了很多細節,實現了自動依賴注入。這里不做繼續深入研究了。寫了一個模擬這個過程的類測試:class kulouclass junjunclass tanteng private $kulou; private $junjun; public function __construct(kulou $kulou,junjun $junjun) $this- kulou = $kulou; $this- junjun = $junjun;//$tanteng = new tanteng(new kulou(),new junjun());$reflector = new ReflectionClass('tanteng');$constructor = $reflector- getConstructor();$dependencies = $constructor- getParameters();print_r($dependencies);exit;原理是通過ReflectionClass類解析類的構造函數,并且取出構造函數的參數,從而判斷依賴關系,從容器中取,并自動注入。轉自:小談博客 http://www.tantengvip.com/2016/01/laravel-construct-ioc/更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷噜噜噜亚洲男人| 欧美成年人在线观看| 国产精品网站大全| 欧美色视频日本版| 国产suv精品一区二区三区88区| 国产精品∨欧美精品v日韩精品| 欧美性猛交xxxxx水多| 午夜精品福利电影| 久久久久女教师免费一区| 亚洲精品第一页| 中文字幕精品影院| 国产精品久久久久久一区二区| 久久影视电视剧凤归四时歌| 亚洲一区av在线播放| 国产精品久久久久久久美男| 久久在线免费视频| 国产精品h在线观看| 欧美精品18videos性欧美| 精品国产自在精品国产浪潮| 欧美一级视频在线观看| 91九色国产社区在线观看| 国产成人av网| 免费97视频在线精品国自产拍| 日韩av中文字幕在线免费观看| 成人h片在线播放免费网站| 欧美激情日韩图片| 国产中文字幕91| 国产精品欧美日韩| 91国产美女视频| 国产精品嫩草视频| 成人精品视频在线| 91超碰中文字幕久久精品| 热久久这里只有精品| 欧美日韩在线一区| 国产精品久久电影观看| 久久精品电影一区二区| 激情懂色av一区av二区av| 亚洲美女av在线播放| 国产精品pans私拍| 久久男人av资源网站| 亚洲激情视频网| 久久视频在线直播| 国产欧美婷婷中文| 亚洲一区二区三区乱码aⅴ蜜桃女| 97福利一区二区| 欧美性猛交xxxx乱大交| 亚洲精品理论电影| 亚洲伊人久久大香线蕉av| 精品国产美女在线| 日韩在线观看av| 黄色成人在线免费| 91大神在线播放精品| 色综合天天狠天天透天天伊人| 欧美日韩在线免费观看| 日韩欧美一区二区在线| 亚洲男人天堂视频| 日韩视频在线免费| 精品国产一区二区三区久久| 亚洲va欧美va国产综合剧情| 久久99国产综合精品女同| 丰满岳妇乱一区二区三区| 精品国偷自产在线视频| 97在线视频国产| 亚洲a级在线播放观看| 欧美激情一区二区三区在线视频观看| 8x海外华人永久免费日韩内陆视频| 亚洲欧美精品中文字幕在线| 97久久超碰福利国产精品…| 国产区精品视频| 美日韩精品免费观看视频| 国产一区二区三区高清在线观看| 国产乱人伦真实精品视频| 超碰97人人做人人爱少妇| 欧美日韩爱爱视频| 国产精品亚洲综合天堂夜夜| 精品中文字幕久久久久久| 日本精品免费观看| 午夜精品免费视频| 韩国国内大量揄拍精品视频| 欧美三级免费观看| 亚洲国产精品久久精品怡红院| 国产美女直播视频一区| 国产在线日韩在线| 日韩免费电影在线观看| 综合欧美国产视频二区| 中文字幕亚洲一区二区三区| 欧美日韩中文字幕在线| 欧美色xxxx| 日韩av在线网站| 精品亚洲一区二区三区在线播放| 亚洲欧美国产精品久久久久久久| 日韩免费观看视频| 国产精品嫩草视频| 77777亚洲午夜久久多人| 国产亚洲精品久久久优势| 久久99亚洲热视| 成人h猎奇视频网站| 九九久久精品一区| 色婷婷综合成人| 38少妇精品导航| 中文字幕日韩精品在线| 久久99久久99精品中文字幕| 国产视频在线观看一区二区| 日韩av理论片| 色婷婷久久av| 国产精品久久久久高潮| 亚洲欧美激情四射在线日| 午夜免费在线观看精品视频| 欧美性videos高清精品| 丝袜亚洲另类欧美重口| 夜夜嗨av色综合久久久综合网| 久久精品99久久香蕉国产色戒| 日韩最新av在线| 欧美高清一级大片| 91精品视频免费看| 日韩中文字幕精品视频| 久久久久久久影视| 午夜精品一区二区三区在线| 久久成人18免费网站| 亚洲天堂免费视频| 欧美激情久久久| 青青草成人在线| 国产精品美女主播| 97精品视频在线| 欧美性jizz18性欧美| 欧美猛少妇色xxxxx| 久久久av网站| 欧美天天综合色影久久精品| 操日韩av在线电影| 成人免费网视频| 国产日韩亚洲欧美| 97在线观看视频国产| 久久亚洲精品中文字幕冲田杏梨| 久久精品人人做人人爽| 国产亚洲精品91在线| 狠狠做深爱婷婷久久综合一区| 欧美中文在线观看国产| 久久精品免费电影| 国产成人精品电影| 另类视频在线观看| 国产极品精品在线观看| 亚洲成人网久久久| 中文字幕欧美精品在线| 日韩欧美成人网| 色婷婷综合成人av| 欧美精品久久久久久久免费观看| 国产精品视频久久| 日本19禁啪啪免费观看www| 国产精品久久久久999| 久久久久久久97| 黑人与娇小精品av专区| 77777亚洲午夜久久多人| 在线观看日韩www视频免费| 久久久国产精彩视频美女艺术照福利| 亚洲免费人成在线视频观看| 国产精品一区久久久| 国产日本欧美一区二区三区在线| 亚洲精品日韩激情在线电影| 亚洲男人av在线| 午夜精品久久久久久99热软件| 91精品国产777在线观看| 成人网址在线观看| 亚洲香蕉成视频在线观看| 国产成人av在线播放|