Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 九九九国产在线,免费看成人啪啪,久久精品二区

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          「ThinkPHP5開發(fā)連載73」tp5連載模板內(nèi)置

          「ThinkPHP5開發(fā)連載73」tp5連載模板內(nèi)置標(biāo)簽之資源文件加載

          一篇文章講解“模型-內(nèi)置標(biāo)簽之條件標(biāo)簽”,本篇文章講解“模板-內(nèi)置標(biāo)簽之資源文件加載”。


          資源文件加載

          資源文件加載即是在模板中引入CSS、JS等資源文件。

          傳統(tǒng)方式的導(dǎo)入外部JS和CSS文件的方法是直接在模板文件使用:

          1. load標(biāo)簽

          系統(tǒng)提供了專門的標(biāo)簽來簡化上面的導(dǎo)入:

          ①新建Index控制器,并新建index方法

          ②新建index.html模板,并引入資源文件

          ③新建script.js與style.css資源文件

          script.js文件:

          style.css文件:

          注意:

          1. ThinkPHP中資源文件的位置為“public/static/”下。

          預(yù)覽:

          ④配合“模板輸出替換”使用

          由于文件路徑不對,導(dǎo)致資源文件加載失敗,可以配合模板輸出替換使用。

          在config/template.php文件中,定義模板輸出替換:

          ⑤在index.html模板中使用模板輸出替換

          預(yù)覽:


          2. 同時加載多個資源文件

          在index.html模板中,使用load標(biāo)簽同時加載多個資源文件。

          預(yù)覽:

          注意:

          1. load標(biāo)簽支持同時加載多個資源文件,文件之間用逗號隔開。


          3. js與css標(biāo)簽

          系統(tǒng)還提供了兩個標(biāo)簽別名js和css,用法和load一致。

          在index.html模板文件中,使用js與css標(biāo)簽加載資源文件。

          預(yù)覽:

          ThinkPHP5連載為卓象程序員原創(chuàng),轉(zhuǎn)載請聯(lián)系卓象程序員

          關(guān)注卓象程序員,定期發(fā)布技術(shù)文章

          下一篇講解“模板-內(nèi)置標(biāo)簽之標(biāo)簽嵌套+原生PHP”

          ?

          程大綱

          1. 加載公共入口文件

          2. 項(xiàng)目初始化Init

          3. 項(xiàng)目預(yù)編譯

          4. URL分析Dispather

          5. 獲取模塊和操作名

          6. 項(xiàng)目執(zhí)行exec

          7. 執(zhí)行控制器的操作

          8. 調(diào)用模塊獲取數(shù)據(jù)

          9. 輸出視圖

          入口文件的定義

          <?php

          define('THINK_PATH', '../ThinkPHP');

          //定義項(xiàng)目名稱,如果不定義,默認(rèn)為入口文件名稱

          define('APP_NAME', 'web');

          define('APP_PATH', './web');

          //加載ThinkPHP框架公共入口文件

          require(THINK_PATH.'/ThinkPHP.php');

          //實(shí)例化一個網(wǎng)站應(yīng)用實(shí)例

          $App=new App();

          //執(zhí)行應(yīng)用程序

          $App->run();

          ?>

          ThinkPHP.php里面的干了些啥

          記錄開始執(zhí)行時間 $GLOBALS[‘_beginTime’](19行)

          檢測 THINK_PATH、 APP_NAME、 APP_PATH、 RUNTIME_PATH 定義,如果沒有則創(chuàng)建(20-26行)

          //不知道你發(fā)現(xiàn)沒有,以index.php這基準(zhǔn),通過APP_PATH,可以組裝出任意路徑

          檢查開啟ALLINONE模式 (22行)

          把核心編譯緩存和項(xiàng)目編譯緩存合并到一個文件里面去,并且過濾掉一些運(yùn)行模式不需要執(zhí)行的代碼,并且對于用戶的自定義常量全部統(tǒng)一定義,不再進(jìn)行額外的檢測。

          檢查是否有核心緩存~runtime.php(33行)

          if(file_exists(RUNTIME_PATH.'~runtime.php')) {

          // 加載框架核心緩存文件

          require RUNTIME_PATH.'~runtime.php';

          }else{

          //1.加載define.php和functions.php

          //2.如果項(xiàng)目編譯緩存目錄不存在,則自動創(chuàng)建項(xiàng)目目錄結(jié)構(gòu)

          //3.加載系統(tǒng)核心類庫(包括ThinkPHP\LIB\THINK下級各子目錄下的 Base、App、Action、Model、View、ThinkException、Log)

          //4.如果 PHP 版本低于 5.2.0 則加載兼容函數(shù)庫

          //生成核心編譯~runtime緩存

          }

          記錄加載文件時間 $GLOBALS['_loadTime'];

          進(jìn)入ThinkPHP\Lib\Think\Core\App

          入口文件中調(diào)用的$App->run()

          public function run() {

          $this->init();

          $this->exec();

          return ;

          }

          $App->run()返回的時候,對一個請求的處理就算完成了

          App.class.php的init函數(shù)(1)

          1.設(shè)定錯誤和異常處理機(jī)制(39-40行)

          (set_error_handler和set_exception_handler)

          2.項(xiàng)目預(yù)編譯并載入(44-52行)

          // 在部署模式下會自動在第一次執(zhí)行的時候編譯項(xiàng)目

          if(defined('RUNTIME_MODEL')){

          // 運(yùn)行模式無需載入項(xiàng)目編譯緩存

          }elseif(is_file(RUNTIME_PATH.'~app.php') && (!is_file(CONFIG_PATH.'config.php') || filemtime(RUNTIME_PATH.'~app.php')>filemtime(CONFIG_PATH.'config.php'))) {

          // 直接讀取編譯后的項(xiàng)目文件

          C(include RUNTIME_PATH.'~app.php');

          }else{

          // 預(yù)編譯項(xiàng)目

          App::build();

          }

          3.設(shè)置時區(qū)支持(59-60行)

          4.允許注冊AUTOLOAD方法、 session初始化(62-66行)

          5. URL分析和調(diào)度(71行)

          執(zhí)行Dispatcher類的靜態(tài)方法 dispatch() 。這段代碼很不錯。

          6.加載項(xiàng)目分組公共文件(82-90行)

          if(!defined('GROUP_NAME')) define('GROUP_NAME', App::getGroup());

          7.取得模塊和操作名稱(92-93行)

          if(!defined('MODULE_NAME')) define('MODULE_NAME', App::getModule());

          if(!defined('ACTION_NAME')) define('ACTION_NAME', App::getAction());

          8.加載模塊配置文件(95-97行)

          9.系統(tǒng)檢查(99-104行)

          App::checkLanguage(); //語言檢查

          App::checkTemplate(); //模板檢查

          if(C('HTML_CACHE_ON')) // 開啟靜態(tài)緩存

          10.項(xiàng)目初始化標(biāo)簽

          初始化完成,init返回

          App.class.php的getGroup

          App.class.php 228行

          1. 檢查 VAR_MODULE 變量(231行)

          (包括 GET 和 POST), 如果未定義,則獲取默認(rèn)分組名

          分組名稱解析完畢,也就是http://server/project/index.php/Model/Action/的project部分,回到init

          App.class.php 186行

          1. 檢查 VAR_MODULE 變量(189行)

          (包括 GET 和 POST), 如果未定義,則獲取默認(rèn)模塊名

          2. 判斷URL地址是否區(qū)分大小寫

          不區(qū)分,小寫模塊名

          智能識別方式 index.php/user_type/index/ 識別到 UserTypeAction 模塊

          模塊名稱解析完畢,也就是http://server/project/index.php/Model/Action/的Model部分,回到init

          App.class.php 209行

          1. 檢查 VAR_MODULE 變量(211行)

          (包括 GET 和 POST), 如果未定義,則獲取默認(rèn)模塊名

          操作名稱解析完畢,也就是http://server/project/index.php/Model/Action/的Action部分,回到init

          App.class.php的exec函數(shù)(1)

          1.創(chuàng)建Action控制器實(shí)例(379行)

          A()函數(shù)

          2.獲取當(dāng)前操作名(400行)

          $action=ACTION_NAME;

          3.執(zhí)行操作(401-418行)

          // 執(zhí)行操作鏈 最多只能有一個輸出

          1.執(zhí)行前置操作 '_before_'.$action

          2.執(zhí)行當(dāng)前操作 $action

          3.執(zhí)行后綴操作 '_after_'.$action

          exec執(zhí)行完畢,一個請求處理完成了

          小結(jié)

          Thinkphp一次網(wǎng)頁請求,就是實(shí)例化一個網(wǎng)站應(yīng)用實(shí)例 ,并執(zhí)行應(yīng)用程序的過程。執(zhí)行過程$App->run()分為init和exec兩部分。

          這中間還省略了一部分分析,比如RBAC,比如Model相關(guān)的代碼,VIEW操作解析等,將在下次分享中討論。

          發(fā)一個管理后臺,工作往往是繁瑣而又重復(fù)的:用戶登錄、權(quán)限管理、圖表展示、控制面板、增刪改查等等,同時,需求也是多種多樣的:電商系統(tǒng)、問答社區(qū)、客服系統(tǒng)、倉庫管理等等,五花八門。能不能有一個框架,能直接搭建好項(xiàng)目骨架,讓開發(fā)者專心于業(yè)務(wù)開發(fā)呢?FastAdmin或許是一個不錯的選擇。


          簡介

          FastAdmin,是 karson 在 Gitee 上開源的后臺開發(fā)框架,倉庫位于 https://gitee.com/karson/fastadmin,目前版本為 v1.3.3.20220121。

          FastAdmin 基于 ThinkPHP+Bootstrap,能夠快速進(jìn)行管理后臺的開發(fā)。FastAdmin提供了強(qiáng)大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,基于MVC設(shè)計(jì)模式,基于模塊化設(shè)計(jì),共分為:前臺、API、后臺和公共等四大部分等。


          使用

          FastAdmin 的特性包括:

          • 基于Auth驗(yàn)證的權(quán)限管理系統(tǒng)
          • 支持無限級父子級權(quán)限繼承,父級的管理員可任意增刪改子級管理員及權(quán)限設(shè)置
            • 支持單管理員多角色
            • 支持管理子級數(shù)據(jù)或個人數(shù)據(jù)
          • 強(qiáng)大的一鍵生成功能
            • 一鍵生成CRUD,包括控制器、模型、視圖、JS、語言包、菜單、回收站等
            • 一鍵壓縮打包JS和CSS文件,一鍵CDN靜態(tài)資源部署
            • 一鍵生成控制器菜單和規(guī)則
            • 一鍵生成API接口文檔
          • 完善的前端功能組件開發(fā)
            • 基于AdminLTE二次開發(fā)
            • 基于Bootstrap開發(fā),自適應(yīng)手機(jī)、平板、PC
            • 基于RequireJS進(jìn)行JS模塊管理,按需加載
            • 基于Less進(jìn)行樣式開發(fā)
          • 強(qiáng)大的應(yīng)用插件擴(kuò)展功能,在線安裝卸載升級應(yīng)用插件
          • 通用的會員模塊和API模塊
          • 共用同一賬號體系的Web端會員中心權(quán)限驗(yàn)證和API接口會員權(quán)限驗(yàn)證
          • 二級域名部署支持,同時域名支持綁定到插件
          • 支持大文件分片上傳、分片直傳、剪切板粘貼上傳、拖拽上傳,進(jìn)度條顯示,圖片上傳前壓縮
          • 支持列表跨頁選擇記憶、分頁大小記憶、左右固定列
          • 強(qiáng)大的應(yīng)用模塊支持(CMS、簡單商城、知識付費(fèi)問答、在線投票系統(tǒng)、Shopro商城、Fastflow工作流、CRM客戶關(guān)系管理)
          • 支持CMS、博客、知識付費(fèi)問答無縫整合Xunsearch全文搜索
          • Uniapp微信小程序支持(CMS小程序、活動報名小程序、民宿酒店預(yù)訂小程序、問答小程序、簡單商城小程序、Shopro商城小程序)
          • 整合第三方短信接口(阿里云、騰訊云短信)
          • 無縫整合第三方云存儲(七牛云、阿里云OSS、又拍云)功能
          • 第三方富文本編輯器支持(Summernote、Nkeditor、百度編輯器)
          • 第三方登錄(QQ、微信、微博)整合
          • 第三方支付(微信、支付寶)無縫整合,微信支持PC端掃碼支付
          • 豐富的插件應(yīng)用市場


          使用FastAdmin,首先進(jìn)行安裝,要求環(huán)境如下:

          PHP >=7.1 且 <=7.3 (推薦PHP7.1版本)
          Mysql >=5.6 (需支持innodb引擎)
          Apache 或 Nginx
          PDO PHP Extension
          MBstring PHP Extension
          CURL PHP Extension
          Git (用于源代碼的版本管理)
          Node.js (可選,用于安裝Bower和LESS,同時打包壓縮也需要使用到)
          Composer (可選,用于管理第三方擴(kuò)展包)
          Bower (可選,用于管理前端資源)
          Less (可選,用于編輯less文件,如果你需要增改css樣式,建議安裝上)

          下載安裝包后,

          1. 將下載的完整包解壓到你的站點(diǎn)項(xiàng)目目錄,不支持放在二級目錄。
          2. 添加站點(diǎn)并綁定到項(xiàng)目中的public目錄為運(yùn)行目錄。
          3. 訪問你的項(xiàng)目域名進(jìn)行安裝,比如:https://demo.fastadmin.net/install.php 。
          4. 為了安全,安裝完成后會在public目錄生成隨機(jī)后臺入口,請通過隨機(jī)后臺入口登錄管理后臺。

          安裝完成后,就能進(jìn)入后臺了:

          FastAdmin基于ThinkPHP5強(qiáng)大的命令行功能擴(kuò)展了一系列命令行功能,可以很方便的一鍵生成CRUD、生成權(quán)限菜單、壓縮打包CSS和JS、啟用禁用插件等功能,如

          //生成fa_test表的CRUD
          php think crud -t test
          //生成fa_test表的CRUD且一鍵生成菜單
          php think crud -t test -u 1
          //刪除fa_test表生成的CRUD
          php think crud -t test -d 1
          //生成fa_test表的CRUD且控制器生成在二級目錄下
          php think crud -t test -c mydir/test

          在FastAdmin中默認(rèn)有四個應(yīng)用模塊:admin、api、common、index,你也可以擴(kuò)展開發(fā)自己的應(yīng)用模塊。

          • 后臺模塊(admin)是FastAdmin中的核心模塊,后臺模塊又分為系統(tǒng)配置、附件管理、分類管理、插件管理等多個功能模塊,更多的功能模塊可以在插件管理中自由的安裝和卸載。后臺的前端是基于AdminLTE和Bootstrap進(jìn)行了大量二次開發(fā),采用RequireJS進(jìn)行JS模塊化管理和加載。
          • 前臺模塊(index)的結(jié)構(gòu)和后臺功能類似,具體請參考后臺模塊的章節(jié)
          • 公共模塊(common)是一個特殊的模塊,默認(rèn)是禁止直接訪問的,一般用于放置一些公共的類或其它模塊的繼承基類等。
          • Api模塊(api)通常用于對接APP,用于向APP提供接口,目前FastAdmin暫未提供API相關(guān)的插件和文檔,你可以直接參考ThinkPHP5官方的文檔。

          FastAdmin插件豐富,提供了插件市場,能夠隨時獲取各類插件,并直接在后臺進(jìn)行安裝和管理:


          總結(jié)

          FastAdmin 基于 ThinkPHP+Bootstrap,提供了強(qiáng)大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,充分利用了ThinkPHP實(shí)現(xiàn)了高效可擴(kuò)展的開發(fā)流程,能夠快速完成管理后臺的開發(fā)。


          主站蜘蛛池模板: 国产在线精品一区二区三区直播| 国产亚洲日韩一区二区三区 | 日韩人妻一区二区三区免费| 日本伊人精品一区二区三区| 日本一区二区三区不卡在线视频| 高清国产AV一区二区三区| 国产一区二区三区日韩精品| 国产精品视频一区二区三区| 国内偷窥一区二区三区视频| 香蕉久久AⅤ一区二区三区| 亚洲AV无码一区二区三区电影| 日本高清不卡一区| 日本精品夜色视频一区二区| 日本韩国一区二区三区| 精品国产一区二区三区AV| 人妻无码一区二区三区免费| 国产在线精品一区二区三区直播| 日韩A无码AV一区二区三区| 国产亚洲综合精品一区二区三区 | 麻豆精品人妻一区二区三区蜜桃 | 免费视频一区二区| 久久综合一区二区无码| 国产精品区AV一区二区| 亚洲日韩国产一区二区三区 | 无码一区二区三区免费| 中文字幕Av一区乱码| 亚洲综合av永久无码精品一区二区| 国产一区二区高清在线播放| 色综合视频一区二区三区 | 无码国产精品一区二区免费| 亚洲一区二区三区国产精品无码| 麻豆AV一区二区三区| 国产精品高清一区二区三区不卡 | 亚洲国产精品无码久久一区二区| 中文字幕日韩一区二区三区不| 中文字幕在线观看一区 | 亚洲爆乳无码一区二区三区| 中文字幕一区二区免费| 国产一区二区三区在线视頻 | 午夜福利国产一区二区| 精品国产亚洲一区二区在线观看 |