### 依賴注入
框架提供了方便的依賴注入機制,可大大減少代碼量提高開發效率,依賴注入使用了系統的
App 服務完成,系統中的控制器方法、路由閉包等均在依賴注入控制范圍內。
[TOC]
### 控制器
控制器中的方法是系統(路由)調用的,我們可以在控制器的參數設置類型修飾,系統會自動分析而
進行注入。
~~~
<?php
namespace app\index\controller;
use hepps\reqrest\Request;
class Entry {
public function index( Request $r ) {
//系統會自動注入 Request對象 至$r變量
}
}
~~~
不過由于框架所提供的類均可以實現靜態調用,所以以上方法所注入到的不是該類真正的實例,如果想要注入到真正的實例修改命名空間在類前面加上build
如:
~~~
<?php
namespace app\index\controller;
use hepps\reqrest\build\Request;
class Entry {
public function index( Request $r ) {
//系統會自動注入 Request對象 至$r變量
}
}
~~~
也可以調用容器提供的方法來自己實現依賴注入
~~~
/**
* 反射自動依賴注入執行一個函數
* @param [type] $func [函數名或者閉包函數]
* @param [type] $args [參數 可以不提供]
* @return [type] [description]
*/
public function invokeFunction($func, $args = [])
調用方法
App::invokeFunction($func, $args = []);
~~~
~~~
/**
* 自動依賴注入執行一個類方法
* @param [type] $class [對象或者類名]
* @param [type] $method [需要執行的方法]
* @param [type] $args [參數 可以不提供]
* @return [type] [description]
*/
public function invokeMethod($class, $method, $args = [])
調用方法
App::invokeMethod($class, $method, $args = []);
~~~
## 方法介紹
#### 執行一個閉包函數
~~~
$func = function($str = 'hello world') {
echo $str;
};
App::invokeFunction($func);
~~~
輸出 `hello world`
#### 傳入參數
~~~
$func = function($str = 'hello world') {
echo $str;
};
App::invokeFunction($func, ['str'=> 'hello']);
~~~
輸出`hello`
#### 執行一個類方法
~~~
App::invokeMethod('\hepps\config\build\Base', 'get', ['name'=>'app.app_path']);
~~~
輸出app下面app_path的值
第一個參數傳入類名稱或者類對象都可以
- 簡介
- 開發規范
- 許可協議
- 作者
- 安裝框架
- 更新日志
- 基礎
- 入口文件
- 全局變量
- 系統配置
- 目錄結構
- 系統常量
- 自動加載
- 系統函數
- 應用密匙
- 依賴注入
- 配置
- 說明
- 基本使用
- 擴展應用
- C函數
- 容器
- 介紹
- 使用容器
- 綁定服務
- 數組訪問
- 請求
- 基礎
- 函數常量
- 獲取信息
- 方法偽造
- 路由
- 基礎使用
- 域名路由
- 靜態路由
- 正則路由
- 路由分組
- 地區
- 資源路由
- 閉包
- 其它方法
- 響應
- 響應輸出
- session
- 設置
- 生命周期數據
- cookie
- 加密使用
- 中間件(鉤子)
- 基礎使用
- 保存到文件
- 數據
- 配置
- 核心操作
- 聚合查詢
- 查詢構造器
- 關系型數據庫關聯
- 事務處理
- 日志
- 日志
- 視圖
- 模板配置
- 模板文件
- 模板語言
- 基礎使用
- 內置標簽
- 擴展標簽庫
- 模板
- 變量輸出
- 原樣輸出
- 運算符
- 緩存
- 緩存配置
- 基本操作
- 多語言
- 基礎使用
- 擴展庫
- 數據驗證
- xml
- 壓縮
- 工具類
- 字符串
- 文件上傳
- 目錄操作
- 二維碼
- 驗證碼
- 圖片處理
- curl
- url生成