Laravel 中的Facades的研究

2021-08-07 08:42:09 字數 1228 閱讀 1898

每乙個facade 對應乙個服務提供者類。如何從facade 解析出該類呢?

illuminate\support\

facades\route

為例。該類內容如下,只有乙個方法

class 

route

extends

facade

}

檢視基類facade中有乙個魔術方法,通過呼叫魔術方法來解析真正呼叫的類。如下

public static function 

__callstatic

($method

, $args

)return

$instance

->

$method

(...

$args);

}

於是檢視getfacaderoot 函式

public static function 

getfacaderoot

()

其中

static

::getfacadeaccessor

()

這個地方比較迷惑了。因為基類中也有了getfacadeaccessor函式,到底是呼叫子類的方法,還是該類自己的方法。於是引出另乙個問題static 與self 的區別

經**發現static 呼叫的是子類中的方法(如果子類中含有與父類中相同的方法),self 呼叫的是本類中的方法。於是**變成

return static

::resolvefacadeinstance('

router')

;

然後檢視這個函式resolvefacadeinstance,發現第一次呼叫類是從繫結的類中獲取,第二次從解析過的靜態變數中獲取。

protected static function 

resolvefacadeinstance

($name

)if

(isset

(static

::$resolvedinstance

[$name

]))

return static

::$resolvedinstance

[$name

] =

static::[

$name];

}

所以呼叫facade介面中的方法,其實是呼叫繫結類的方法。

laravel中郵件的傳送以及model的使用

一 修改config裡面的mail.php 只需要修改一處 from address 163.com name 誰發的 二 修改.env檔案 mail driver smtp mail host smtp.163.com mail port 25 mail username 163.com mail...

laravel在終端中檢視日誌的方法

原文 php artisan tail命令可用來檢視實時的程式執行 log,在 debug 模式關閉的情況下 如 生產環境 尤其有用.預設情況下 tail 只是針對本地的 php artisan tail開發的時候,還可以開啟 sql 查詢語句的 log,配合php artisan tail一起使用...

laravel在終端中檢視日誌的方法

原文 php artisan tail命令可用來檢視實時的程式執行 log,在 debug 模式關閉的情況下 如 生產環境 尤其有用.預設情況下 tail 只是針對本地的 php artisan tail開發的時候,還可以開啟 sql 查詢語句的 log,配合php artisan tail一起使用...