国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

聊聊框架開發的依賴注入,容器與外觀模式(下部)

2020-03-22 18:30:33
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于聊聊框架開發的依賴注入,容器與外觀模式(下部),有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

外觀模式:facade,也叫門面模式

1.用一句來說:就是將操作進行封裝,對外提供一個統一的接口

2.因為操作可能分布在多個類中,而剛才學過的容器恰好可以將不同的類與實現封裝起來

3.所以外觀模式與依賴容器是黃金搭檔,經常會放在一起使用

 ?php  * 用戶登錄的操作涉及三個操作 * 1.連接數據庫 * 2.用戶數據驗證 * 3.輸出提示信息require container.php //創建Facade類,實現以上三個功能html' target='_blank'>class Facade//連接數據庫public static function connect(Container $container)return $container- make( db )- connect();//用戶數據驗證public static function check(Container $container)return $container- make( validate )- check();//輸出提示信息public static function display(Container $container)return $container- make( view )- display();//客戶端調用echo Facade::connect($container);echo Facade::check($container);echo Facade::display($container);//可以在外觀模型中使用初始化方法事先注入容器對象,來簡化客戶端調用require container.php class Facade//創建成員屬性保存容器對象protected static $container = null;//創建初始化方法為容器對象賦值public static function initialize(Container $container)static::$container = $container;* 因為已經在初始化方法中將容器對象導入到了當前類中,* 并且保存到了類的靜態屬性中,為所有類成員所共享,* 所以以下方法可直接調用不用再容器注入* 注意:這里全部采用后期靜態延遲綁定方法來訪問當前容器對象* 這主要是為了方便用戶在靜態繼承的上下文環境中進行調用//連接數據庫public static function connect()return static::$container- make( db )- connect();//用戶數據驗證public static function check()return static::$container- make( validate )- check();//輸出提示信息public static function display()return static::$container- make( view )- display();//客戶端調用//初始化類門面類中的容器對象Facade::initialize($container);//靜態統一調用內部的方法(無須重復注入依賴容器對象啦,實現了細節隱藏,通用性更強)echo Facade::connect();echo Facade::check();echo Facade::display();

下面將代碼整合在一起:

 ?php //數據庫操作類class Db//數據庫連接public function connect()return 數據庫連接成功 br //數據驗證類class Validate//數據驗證public function check()return 數據驗證成功 br //視圖圖class View//內容輸出public function display()return 用戶登錄成功 /******************************************************************************///一.創建容器類class Container//創建屬性,用空數組初始化,該屬性用來保存類與類的實例化方法public $instance = [];//初始化實例數組,將需要實例化的類,與實例化的方法進行綁定public function bind($abstract, Closure $process)//鍵名為類名,值為實例化的方法$this- instance[$abstract] = $process;//創建類實例public function make($abstract, $params=[])return call_user_func_array($this- instance[$abstract],[]);/******************************************************************************///二、服務綁定: 將類實例注冊到容器中$container = new Container(); //將Db類綁定到容器中$container- bind( db , function(){return new Db();//將Validate類實例綁定到容器中$container- bind( validate , function(){return new Validate();//將View類實例綁定到容器中$container- bind( view , function(){return new View();});

php從php5.3起,大量的吸收其它編程語言的優點,支持越來越多的新特性,特別是php7.0的推出,使php發到了新高度,是一個里程碑式的版本。更多優秀的php開發教程,請持續關注:php (www.survivalescaperooms.com)。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

聊聊框架開發的依賴注入,容器與外觀模式(上部)

聊聊框架開發的依賴注入,容器與外觀模式(中部)

以上就是聊聊框架開發的依賴注入,容器與外觀模式(下部)的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南陵县| 赫章县| 龙里县| 武安市| 邢台县| 永新县| 平潭县| 江都市| 梁河县| 清苑县| 长岭县| 汝南县| 宁明县| 南召县| 太康县| 古交市| 长海县| 裕民县| 临高县| 彰武县| 邻水| 绥棱县| 江油市| 高尔夫| 晋江市| 冷水江市| 阿坝| 黑河市| 射洪县| 昭平县| 克山县| 白玉县| 郸城县| 夹江县| 博湖县| 贵港市| 江都市| 泉州市| 舒城县| 遂溪县| 泉州市|