十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
小編給大家分享一下TP6中超級函數(shù)app()有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)讓胡路免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
tp6中的助手函數(shù)app(),是一個包含極廣,涵蓋極深,作用巨大的助手函數(shù),他可以調(diào)用很多方法,也是很多助手函數(shù) 的集合。
首先這是在helper.php中定義的一個助手函數(shù),我們來看一下:
if (!function_exists('app')) {
/**
* 快速獲取容器中的實例 支持依賴注入
* @param string $name 類名或標(biāo)識 默認(rèn)獲取當(dāng)前應(yīng)用實例
* @param array $args 參數(shù)
* @param bool $newInstance 是否每次創(chuàng)建新的實例
* @return object|App
*/
function app(string $name = '', array $args = [], bool $newInstance = false)
{
return Container::getInstance()->make($name ?: App::class, $args, $newInstance);
}}這個函數(shù)如果你不帶任何參數(shù)直接打印是這樣的:
halt(app());
App類。Container。容器類中裝載了絕大多數(shù)我們常用的具有27種之多的依賴注入類。
如下:
在任何時候我們都可以往容器中注入新的類。
比如我們注入一個Upgrade類到容器中:
bind('settings','app\admin\controller\Upgrade');或者:bind('settings',Upgrade::class);或者:
Container::getInstance()->bind('settings', Upgrade::class)如圖:
調(diào)用容器中類:
調(diào)用方式:
app('settings')->upgradeTask($this->request);或:
Container::getInstance()->make('settings')->upgradeTask($this->request)也就是app()助手函數(shù)不僅可以直接獲取App類中的方法,還可以獲取容器中所有的依賴注入類中的方法。容器是用來更方便的管理類依賴及運行依賴注入的工具。
依賴注入其實本質(zhì)上是指在構(gòu)造函數(shù)中對其他需要使用的類迅速實例化。
依賴注入的類統(tǒng)一由容器進(jìn)行管理。
例如我們很多助手函數(shù):
abort 中斷執(zhí)行并發(fā)送HTTP狀態(tài)碼 app 快速獲取容器中的實例 支持依賴注入 bind 快速綁定對象實例 cache 緩存管理 class_basename 獲取類名(不包含命名空間)class_uses_recursive 獲取一個類里所有用到的traitconfig 獲取和設(shè)置配置參數(shù) cookie Cookie管理 download 獲取\think\response\Download對象實例 dump 瀏覽器友好的變量輸出 env 獲取環(huán)境變量 event 觸發(fā)事件 halt 變量調(diào)試輸出并中斷執(zhí)行 input 獲取輸入數(shù)據(jù) 支持默認(rèn)值和過濾 invoke 調(diào)用反射執(zhí)行callable 支持依賴注入 json JSON數(shù)據(jù)輸出 jsonp JSONP數(shù)據(jù)輸出 lang 獲取語言變量值 parse_name 字符串命名風(fēng)格轉(zhuǎn)換 redirect 重定向輸出 request 獲取當(dāng)前Request對象 response 實例化Response對象 session Session管理 token 生成表單令牌輸出 trace 記錄日志信息 trait_uses_recursive 獲取一個trait里所有引用到的traiturl Url生成 validate 實例化驗證器 view 渲染模板輸出 display 渲染內(nèi)容輸出 xml XML數(shù)據(jù)輸出 app_path 當(dāng)前應(yīng)用目錄 base_path 應(yīng)用基礎(chǔ)目錄 config_path 應(yīng)用配置目錄 public_path web根目錄 root_path 應(yīng)用根目錄 runtime_path 應(yīng)用運行時目錄
在APP()助手函數(shù)面前只能算是小弟,因為只用一個app()函數(shù)就可以替代絕大部分的助手函數(shù)。
舉例:
例如我們調(diào)用配置文件:
config()
實際我們可以這樣寫:app('config')->get()又例如:request()->time() 可以寫作:app('request')->time()對于其他的助手函數(shù),app()都是一樣打包全收。
以上是“TP6中超級函數(shù)app()有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!