php think app_快来了解下TP6中的超级函数app()!
下面由thinkphp框架教程栏目给大家介绍TP6中的超级函数app(),希望对需要的朋友有所帮助!
tp6中的助手函数app(),是一个包含极广,涵盖极深,作用巨大的助手函数,他可以调用很多方法,也是很多助手函数 的集合。
首先这是在helper.php中定义的一个助手函数,我们来看一下:if (!function_exists('app')) {
/**
* 快速获取容器中的实例 支持依赖注入
* @param string $name 类名或标识 默认获取当前应用实例
* @param array $args 参数
* @param bool $newInstance 是否每次创建新的实例
* @return object|App
*/
function app(string $name = '', array $args = [], bool $newInstance = false)
{
return Container::getInstance()->make($name ?: App::class, $args, $newInstance);
}}
这个函数如果你不带任何参数直接打印是这样的:
halt(app());
不带参数直接调用了think下的App类。
当你带上参数后它就调用了容器类Container。
容器类中装载了绝大多数我们常用的具有27种之多的依赖注入类。
如下:
在任何时候我们都可以往容器中注入新的类。
比如我们注入一个Upgrade类到容器中:bind('settings','app\admin\controller\Upgrade');或者:bind('settings',Upgrade::class);或者:
Container::getInstance()->bind('settings', Upgrade::class)
如图:
调用容器中类:
调用方式:app('settings')->upgradeTask($this->request);或:
Container::getInstance()->make('settings')->upgradeTask($this->request)
也就是app()助手函数不仅可以直接获取App类中的方法,还可以获取容器中所有的依赖注入类中的方法。容器是用来更方便的管理类依赖及运行依赖注入的工具。
依赖注入其实本质上是指在构造函数中对其他需要使用的类迅速实例化。
依赖注入的类统一由容器进行管理。
例如我们很多助手函数:
助手函数 描述abort中断执行并发送HTTP状态码
app快速获取容器中的实例 支持依赖注入
bind快速绑定对象实例
cache缓存管理
class_basename获取类名(不包含命名空间)class_uses_recursive获取一个类里所有用到的traitconfig获取和设置配置参数
cookieCookie管理
download获取\think\response\Download对象实例
dump浏览器友好的变量输出
env获取环境变量
event触发事件
halt变量调试输出并中断执行
input获取输入数据 支持默认值和过滤
invoke调用反射执行callable 支持依赖注入
jsonJSON数据输出
jsonpJSONP数据输出
lang获取语言变量值
parse_name字符串命名风格转换
redirect重定向输出
request获取当前Request对象
response实例化Response对象
sessionSession管理
token生成表单令牌输出
trace记录日志信息
trait_uses_recursive获取一个trait里所有引用到的traiturlUrl生成
validate实例化验证器
view渲染模板输出
display渲染内容输出
xmlXML数据输出
app_path当前应用目录
base_path应用基础目录
config_path应用配置目录
public_pathweb根目录
root_path应用根目录
runtime_path应用运行时目录
在APP()助手函数面前只能算是小弟,因为只用一个app()函数就可以替代绝大部分的助手函数。
举例:例如我们调用配置文件:
config()
实际我们可以这样写:app('config')->get()又例如:request()->time() 可以写作:app('request')->time()
对于其他的助手函数,app()都是一样打包全收。
php think app_快来了解下TP6中的超级函数app()!相关推荐
- tp6中的助手函数是什么意思?
举个例子. Cache::set("bj","您好",3600); 也可以写成:助手函数, cache("bj","您好" ...
- 普通平键的主要尺寸有_快来收下这份家装尺寸表,衣柜不再鸡肋
有些人在装修的时候还把思想停留在户型决定一切的理念.户型的好坏对于我们的家装效果固然重要.但是好的装修效果离不开户型和格局布局设计的相辅相成.空间布局的设计其实和硬装没有太大的关系,几乎是由家具的摆放 ...
- 今天才发现!微信这样发语音才好听,学会快去尝试下吧
微信是一款全民性的社交工具,大家每天都会使用微信聊天,而微信聊天又分为文字和语音两种方式. 不知道大家发现没有,微信语音和自己平时说话的声音并不一样,甚至觉得语音里面的声音难听. 今天笔者分享的就是, ...
- 在腾讯和网易快吃光游戏下,区块链游戏是较好的机会
4月20日,首届IGS成都·数字娱乐博览会在成都震撼启幕.下午,IGS组委会与陀螺财经联合主办的"WeChain 2018区块链行业峰会"也正式拉开了序幕. 此次大会围绕着区 ...
- 全志V853芯片放开快启方案打印及在快起方式下配置isp led的方法
全志V85x芯片 如何放开快启方案的打印? 1.主题 如何放开快启方案的打印 2.问题背景 产品:v851系列快启方案 软件:tina 其他:特有版本信息添加自由描述 (如固件版本,复现概率,特定环境 ...
- 东芝rc100装linux,东芝RC100的小伙伴们,快来检查下你的固件版本
在用东芝RC100的小伙伴们,快来检查下你的固件版本,有新固件可以更新啦.新固件不仅可以修复一些罕见情况下的BUG,还能提升RC100的工作稳定性.建议所有RC100用户升级至1.03版固件. 1.0 ...
- 播放器设计 要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能
<软件开发工具>实验 一.实验内容 实验1:写字板设计 要求:实现字体颜色.大小更改:实现查找.替换功能 例图如下: 实验2:画图工具设计 要求:实现画笔粗细.颜色选择 ...
- dotnet 是 前30个增长最快速度的开源项目中排名第一的开发平台
CNCF 的博客 发了一篇文章 <Update on CNCF and Open Source Project Velocity 2020>,中文翻译参见 2020年CNCF和开源项目开发 ...
- windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同
windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同 介绍ubuntu系统下配置docker下GPU使用环境的文章很多,本文算是一个比较性梳理. 主要比较一下wsl ...
最新文章
- ContentProvider访问问题
- 图书ISBN号码检验(洛谷P1055题题解,Java语言描述)
- lottie-android: 【Android】开源动画库(Airbnb开源)
- 修改图层的范围_PS教程连载第47课:PS图层操作案例星球
- C++ 对象模型(二)
- python tkinter获取屏幕大小_用 Python 制作关不掉的端午安康弹窗
- 今日复习的linux命令
- Java JDK文档下载
- html引入苹方字体,原 前端项目,引入苹方字体
- 脑电的频谱分析和时频分析-EEG Processing and Feature 5
- 工作流软件哪个好?介绍几款知名的工作流软件
- String类型getBytes方法
- 学科实践活动感悟50字_社会实践感悟50字_寒假社会实践感悟
- ZIP 压缩解压命令
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
- 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译
- 计算机毕业实习报告范文,大学计算机专业毕业实习报告范文
- 如何解决我的电脑中文件搜索速度很慢的问题?
- 计算机网络【1】 TCP/IP
- appium python自动测试 百度网盘_S35 移动App Appium自动化测试教程Appium+Python 百度云...
热门文章
- LeetCode每日一题——1235. 规划兼职工作
- 02-Nacos注册中心工作流程
- php TP 环境搭建,TP5环境的搭建以及运用
- 常见的定制多肽合成中的氨基酸问题
- Unity中的Shuriken粒子系统(6)
- pygame 飞机大战子弹的编写(七)花样年华
- linux 回溯错误,linux – 解释gfortran错误回溯
- 程序员免费技术微信群
- ROS下用gmapping 构建实验室地图的实现
- RSATree: Distribution-Aware Data Representation of Large-Scale Tabular Datasets for Flexible Visual