## 門面(`Facade`)
門面為容器中的類提供了一個靜態調用接口,相比于傳統的靜態方法調用, 帶來了更好的可測試性和擴展性,你可以為任何的非靜態類庫定義一個`facade`類。
> 系統已經為大部分核心類庫定義了`Facade`,所以你可以通過`Facade`來訪問這些系統類,當然也可以為你的應用類庫添加靜態代理。
下面是一個示例,假如我們定義了一個`app\common\Test`類,里面有一個`hello`動態方法。
~~~
<?php
namespace app\common;
class Test
{
public function hello($name)
{
return 'hello,' . $name;
}
}
~~~
調用hello方法的代碼應該類似于:
~~~
$test = new \app\common\Test;
echo $test->hello('dmphp'); // 輸出 hello,dmphp
~~~
接下來,我們給這個類定義一個靜態代理類`app\facade\Test`(這個類名不一定要和`Test`類一致,但通常為了便于管理,建議保持名稱統一)。
~~~
<?php
namespace app\facade;
use think\Facade;
class Test extends Facade
{
protected static function getFacadeClass()
{
return 'app\common\Test';
}
}
~~~
只要這個類庫繼承`phalcon\Facade`,就可以使用靜態方式調用動態類`app\common\Test`的動態方法,例如上面的代碼就可以改成:
~~~
// 無需進行實例化 直接以靜態方法方式調用hello
echo \app\facade\Test::hello('dmphp');
~~~
結果也會輸出`hello,dmphp`。
- 序言
- 基礎
- 安裝
- 規范
- 目錄
- 配置
- 架構
- 入口文件
- 偽靜態配置
- Facade
- 使用行為
- 路由
- 路由定義
- 控制器
- 定義控制器
- 數據庫
- 連接數據庫
- 鏈式操作
- where
- builder
- field
- limit
- page
- order
- group
- find
- select
- value
- count
- sum
- average
- maximum
- minimum
- column
- update
- insert
- delete
- begin
- rollback
- commit
- left
- right
- inner
- for_update
- shared_lock
- cache
- 構造器
- 查詢
- 添加
- 更新
- 刪除
- 模型
- 創建模型
- 自動時間戳
- 模型關聯
- 模型事件
- 數據轉換
- 軟刪除
- 視圖
- 模板
- 日志
- 調試
- 驗證
- CLI命令行
- 標準
- 命名規范
- 語法規范
- 注釋規范
- 設計模式
- 開發提示
- 數據字典
- Markdown使用文檔
- volt模板引擎
- 簡介
- 注釋
- 變量
- 過濾器
- 流程控制
- 循環語句for
- 條件判斷語句if
- 表達式及運算符
- 函數