abstrak:<?php //數(shù)據(jù)庫連接過程 class Db { public function connect() { return '連接數(shù)據(jù)庫====》成功&
<?php //數(shù)據(jù)庫連接過程 class Db { public function connect() { return '連接數(shù)據(jù)庫====》成功 !<br>'; } } //驗證過程 class Validate { public function check() { return '驗證通過====》成功 !<br>'; } } //登陸顯示信息 class View { public function display() { return '登陸成功====》成功 !<br>'; } } //創(chuàng)建容器類 class Container { // 創(chuàng)建容器屬性,用關(guān)聯(lián)數(shù)組保存類或類實例化方法 public $instance=[]; // 對$instance[] 寫入,綁定 public function bind($login,Closure $process) { $this->instance[$login]=$process; } // 對$instance[] 讀取,實例化對應(yīng)的關(guān)聯(lián)數(shù)組中的類名 public function make($login,$params=[]) { return call_user_func_array($this->instance[$login],[]); } } //實例化容器后對容器綁定外部類 $container = new Container(); $container ->bind('db',function (){ return new Db(); }); $container ->bind('validate',function (){ return new Validate(); }); $container->bind('view',function (){ return new View(); });
<?php /** * Created by PhpStorm. * User: 普通用戶 * Date: 2019/6/23 * Time: 17:44 */ require 'facade.php'; class Facade { // 保存初始化容器類,靜態(tài)定義可讓類方法訪問 protected static $container =null; //初始化獲取容器類,方便類內(nèi)其他方法重新獲取 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類 Facade::initialize($container); //訪問facade類 echo Facade::connect(); echo Facade::check(); echo Facade::display();
本章節(jié)對之前的依賴注入知識又重新重溫一遍,可見依賴注入在開發(fā)中比較重要,經(jīng)過學(xué)習(xí)對高度藕合的問題在后續(xù)開發(fā)中盡量避免,另外運用facade類實現(xiàn)不需要對基類實例化后再訪問而方便的使用靜態(tài)直接訪問
Guru membetulkan:天蓬老師Masa pembetulan:2019-06-24 10:07:55
Rumusan guru:這類門面代碼與容器模型是緊密結(jié)合在一起的, 一定要結(jié)合 起來理解和學(xué)習(xí)