__app__ .php,快来了解下TP6中的超等函数app()!_PHP开发框架教程

下面由

thinkphp框架教程栏目给人人引见TP6中的超等函数app(),愿望对须要的朋侪有所协助!

0e12b1faf6d056dace907ef47663fa0e.png

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());

48f2388fafd5e8ff747643765bbf215c.png

不带参数直接挪用了think下的App类。

当你带上参数后它就挪用了容器类Container。

容器类中装载了绝大多数我们经常运用的具有27种之多的依靠注入类。

以下:

f49d75ecd1cb79927cd796c89ed1407a.png

在任何时候我们都能够往容器中注入新的类。

比方我们注入一个Upgrade类到容器中:

bind('settings','app\admin\controller\Upgrade');或许:bind('settings',Upgrade::class);或许:

Container::getInstance()->bind('settings', Upgrade::class)

如图:

8adf895a815147ee44abedf8aa5e471f.png

挪用容器中类:

挪用体式格局:

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()都是一样打包全收。

以上就是快来了解下TP6中的超等函数app()!的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个基本的SKF_Digest()函数测试用例的C语言代码,您可以根据自己的实际情况进行修改和使用。以下是代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <memory.h> #include "skf.h" #define MAX_DATA_LEN 1024 // 最大数据长度 #define MAX_DIGEST_LEN 64 // 最大摘要长度 BYTE g_symKey[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10}; // 对称密钥 int main() { ULONG rv = 0; HAPPLICATION hApp = NULL; HCONTAINER hContainer = NULL; HANDLE hSessionKey = NULL; DWORD dwDataLen = 0; DWORD dwDigestLen = 0; BYTE pbData[MAX_DATA_LEN] = {0}; BYTE pbDigest[MAX_DIGEST_LEN] = {0}; ULONG tpstart = 0, tpend = 0; UINT64 tps = 0; int i = 0; // 初始化SKF库 SKF_Initialize(); // 打开应用 rv = SKF_OpenApplication("TestApp", &hApp); if(rv != SAR_OK) { printf("Open application failed: %08X\n", rv); goto exit; } // 打开容器 rv = SKF_OpenContainer(hApp, "TestContainer", &hContainer); if(rv != SAR_OK) { printf("Open container failed: %08X\n", rv); goto exit; } // 创建会话密钥 rv = SKF_CreateSessionKey(hContainer, SGD_SM4_ECB, &hSessionKey); if(rv != SAR_OK) { printf("Create session key failed: %08X\n", rv); goto exit; } // 设置会话密钥 rv = SKF_SetSymmKey(hSessionKey, g_symKey, SGD_SM4_ECB); if(rv != SAR_OK) { printf("Set session key failed: %08X\n", rv); goto exit; } // 初始化测试数据 for(i = 0; i < MAX_DATA_LEN; i++) { pbData[i] = (BYTE)i; } // 测试SKF_Digest()函数的准确性和TPS性能 tpstart = SKF_GetTickCount(); for(i = 0; i < 1000; i++) { dwDataLen = 1024; rv = SKF_Digest(hSessionKey, pbData, dwDataLen, pbDigest, &dwDigestLen); if(rv != SAR_OK) { printf("SKF_Digest() failed: %08X\n", rv); goto exit; } } tpend = SKF_GetTickCount(); tps = 1000000 / (tpend - tpstart) * 1000; printf("SKF_Digest() test result: TPS = %llu\n", tps); exit: // 关闭会话密钥 if(hSessionKey != NULL) { SKF_CloseHandle(hSessionKey); hSessionKey = NULL; } // 关闭容器 if(hContainer != NULL) { SKF_CloseContainer(hContainer); hContainer = NULL; } // 关闭应用 if(hApp != NULL) { SKF_CloseApplication(hApp); hApp = NULL; } // 释放SKF库资源 SKF_Finalize(); return 0; } ``` 以上代码,首先使用SKF_Initialize()函数初始化SKF库,然后打开应用、打开容器、创建会话密钥、设置会话密钥等步骤。接着,初始化测试数据,并使用SKF_Digest()函数计算数据的摘要值,循环1000次用于测试TPS性能。最后,关闭会话密钥、关闭容器、关闭应用,并使用SKF_Finalize()函数释放SKF库资源。 需要注意的是,以上代码仅供参考,实际使用时需要根据自己的实际情况进行修改和调整,以保证代码的正确性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值