### 依赖注入
框架提供了方便的依赖注入机制,可大大减少代码量提高开发效率,依赖注入使用了系统的
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生成