ThinkPHP6.0入門知識點匯總

本篇文章給大家帶來了關于thinkphp的相關知識,其中主要整理了thinkphp6.0入門的相關問題,thinkphp是一個免費開源的,快速、簡單的面向對象的輕量級php開發框架,是為了敏捷web應用開發和簡化企業應用開發而誕生的,下面一起來看一下,希望對大家有幫助。

ThinkPHP6.0入門知識點匯總

推薦學習:《thinkphp

一.框架介紹

ThinkPHP是一個免費開源的,快速、簡單的面向對象的輕量級PHP開發框架,是為了敏捷WEB應用開發和簡化企業應用開發而誕生的。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡代碼的同時,更注重易用性。遵循Apache2開源許可協議發布,意味著你可以免費使用ThinkPHP,甚至允許把你基于ThinkPHP開發的應用開源或商業產品發布/銷售。

  1. TP 框架是免費開源的、輕量級的、簡單快速且敏捷的 PHP 框架 ?

  2. ThinkPHP6.0 要求 PHP 版本是 7.1+以上,官方推薦 7.3 ?

  3. 除了 PHP7.1+,還需要開啟 PDO 數據庫引擎和 MBstring 字符串擴展 ?

二.安裝過程

官網不提供軟件包下載,官方推薦使用composer下載和更新

立即學習PHP免費學習筆記(深入)”;

關于composer的安裝和使用不做介紹

由于composer默認鏡像源在國外,鏈接速度較慢,因此安裝的時間可能會比較長,我們建議使用國內鏡像(阿里云),代碼如下? ??

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

如果你是第一次安裝,或者你需要安裝全新框架,在命令行界面,切換到你需要安裝的WEB目錄,執行如下命令? ??

composer create-project topthink/think tp

這里的“tp”是項目的根目錄名,你可以任意更改,這個就是我們后邊常提到的應用根目錄

如果你之前已經安裝過,那么切換到你的應用根目錄下面,然后執行下面的命令進行更新

composer update topthink/framework

三.運行測試

在cmd命令行進入項目目錄運行命令

php think run

在瀏覽器輸入: ? http://127.0.0.1:8000 ? ? http://localhost:8000你就會看到歡迎界面 ?

如果 ? 80 ? 端口沒有被占用的情況下,你也可以直接使用? ??

php think run -p 80

然后你就可以直接使用http://localhost/ 直接訪問了,這時瀏覽器默認訪問文件是:應用根目錄/app/controller/index.php控制器的index方法,而http://localhost/的實際路徑是http://localhost/index.php/index/index,(具體原因這里不做詳細解釋,后邊在進行探討)

ThinkPHP6.0入門知識點匯總

當然你現在可以把localhost配置為本地域名進行訪問,這里不做贅述

3.這里以tp.com為例:訪問index控制器的index操作

http://tp.com? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?訪問默認入口文件、默認控制器和默認方法

http://tp.com/index.php? ? ? ? ? ? ? ? ? ? ?指定index.php入口文件,默認控制器的默認方法

http://tp.com/index.php/index? ? ? ? ? ?指定index.php入口文件,index控制器的默認方法

http://tp.com/index.php/index/index 指定index.php入口文件,index控制器的index方法

ThinkPHP6.0入門知識點匯總

四.開發規范

? ? ? ? 開發規范沒什么好講直接參考手冊官方文檔

ThinkPHP6.0入門知識點匯總

五.目錄結構

? ? ? ? 目錄結構也沒必要講直接參考手冊官方文檔

ThinkPHP6.0入門知識點匯總

ThinkPHP6.0入門知識點匯總

?ThinkPHP6.0入門知識點匯總

六.開啟調試模式

在項目的開發階段,我們建議開啟框架的調試模式

當調試模式開啟后,會犧牲一部分執行效率,但能大大提高我們的 開發排錯能力

當部署生產環境時,我們再關閉調試模式即可

默認安裝的tp6.0框架默認不開啟調試模式,這時我們可以在瀏覽器輸入不存在的控制器或錯誤的地址進行驗證

ThinkPHP6.0入門知識點匯總表示調試未開啟

通過命令行安裝的 TP6.0,會自動在根目錄生成一個.example.env 文件,即環境變量示例文件,我們只要把這個文件更名為.env ? (通常復制一份更名即可), ? 即可生效,同時開啟調試模式 ?

//環境變量示例文件  APP_DEBUG = true  [APP] DEFAULT_TIMEZONE = Asia/Shanghai  [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password HOSTPORT = 3306 CHARSET = utf8 DEBUG = true  [LANG] default_lang = zh-cn

不難看出文件APP_DEBUG = true打開調試模式,若要關閉調試模式將true改為false,另外還有應用配置,數據庫和語言設置,當然你也可以配置更多內容

現在我們在刷新剛才的頁面,會提示控制器不存在,并且右下角會出現 Trace 調試小圖標,說明調試開啟了ThinkPHP6.0入門知識點匯總

開啟調試模式有什么用:

a. 記錄系統運行流程的執行過程 ?

b. ? 展示錯誤和調試信息,并開啟日志記錄 ?

c. ? 模版修改可以及時生效 ? ( ? 不會被緩存干擾 ? ) ?

d. ? 啟動右下角的 ? Trace ? 調試功能,更加強大 ?

e. ? 發生異常時,也會顯示異常信息 ?

還有一種模式,就是關閉調試的時候,也可以顯示簡要的錯誤信息,打開根目錄下 config 的 app.php 最后一行設置為true

'show_error_msg'   => false,

?ThinkPHP6.0入門知識點匯總

七.配置信息

配置文件有兩種形式:一種是采用.env適用于本地開發,另一種就是在根目錄下的config目錄下,包含整個項目的配置,適用于生產環境

注意:官方明確表示.env文件部署后會被忽略,所以它僅適用于本地開發

配置優先級,如果在本地測試時 ? .env ? 優先于 config,從 ? config ? 配置中可以看出,它是先讀取 ? .env ? 的,然后再默認配置一個自己的,而部署環境則忽略.env,只讀取config ?

開開發項目過程中,我們少不了獲取配置文件中的屬性值,那么我們怎么能獲取到這些值呢?接下來我們以獲取數據庫的用戶名為例

對于.env文件。

APP_DEBUG = true  [APP] DEFAULT_TIMEZONE = Asia/Shanghai  [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = root PASSWORD = 123456 HOSTPORT = 3306 CHARSET = utf8 DEBUG = true  [LANG] default_lang = zh-cn

比如要獲取[DATABASE]下的USERNAME=root獲取方式如下:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

use thinkfacadeEnv;                                                            return Env::get('database.username');                                              我們寫一個getEnv發方法獲取databases下的username,這個比較簡單,直接獲取.env文件下的,database下的username
<?php namespace appcontroller;  use appBaseController; use thinkfacadeEnv;//引入env類  class Index extends BaseController {      public function getEnv(){         return Env::get('database.username');     } }

對于config文件 ?

<?php  return [     // 默認使用的數據庫連接配置     'default'         => env('database.driver', 'mysql'),      // 自定義時間查詢規則     'time_query_rule' => [],      // 自動寫入時間戳字段     // true為自動識別類型 false關閉     // 字符串則明確指定時間字段類型 支持 int timestamp datetime date     'auto_timestamp'  => true,      // 時間字段取出后的默認時間格式     'datetime_format' => 'Y-m-d H:i:s',      // 時間字段配置 配置格式:create_time,update_time     'datetime_field'  => '',      // 數據庫連接配置信息     'connections'     => [         'mysql' => [             // 數據庫類型             'type'            => env('database.type', 'mysql'),             // 服務器地址             'hostname'        => env('database.hostname', '127.0.0.1'),             // 數據庫名             'database'        => env('database.database', ''),             // 用戶名             'username'        => env('database.username', 'root123'),             // 密碼             'password'        => env('database.password', ''),             // 端口             'hostport'        => env('database.hostport', '3306'),             // 數據庫連接參數             'params'          => [],             // 數據庫編碼默認采用utf8             'charset'         => env('database.charset', 'utf8'),             // 數據庫表前綴             'prefix'          => env('database.prefix', ''),              // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)             'deploy'          => 0,             // 數據庫讀寫是否分離 主從式有效             'rw_separate'     => false,             // 讀寫分離后 主服務器數量             'master_num'      => 1,             // 指定從服務器序號             'slave_no'        => '',             // 是否嚴格檢查字段是否存在             'fields_strict'   => true,             // 是否需要斷線重連             'break_reconnect' => false,             // 監聽SQL             'trigger_sql'     => env('app_debug', true),             // 開啟字段緩存             'fields_cache'    => false,         ],          // 更多的數據庫配置信息     ], ];

比如要獲取[DATABASE]下的USERNAME=root獲取方式如下:

use thinkfacadeConfig;
return Config::get(‘database.connections.mysql.username’);

我們寫一個getConfig發方法獲取databases下的username,這個就要麻煩一點,這里獲取的順序依次是:

所在配置文件——>數據庫連接配置信息——>mysql數據庫——>用戶名

需要注意的是:由于config配置文件的優先級低于.env,所以,如果當前是處于開發環境,如下代碼并不會獲取到config目錄下database配置文件的用戶名,而是獲取.env文件的用戶名,所以想要獲取正確配置則先關閉開發環境

<?php namespace appcontroller;  use appBaseController;  use thinkfacadeEnv;//引入env類  class Index extends BaseController {      public function hello($name = 'ThinkPHP6')     {         return 'hello,' . $name;     }       public function getEnv(){         return Env::get('database.username');     }       public function getConfig(){         return Config::get('database.connections.mysql.username');      } }

對于上邊獲取config配置有限讀取.env文件的問題,我們可以在獲取信息之前先使用has方法判斷當前需要獲取值是否存在兩個文件再決定讀取哪一個文件

<?php namespace appcontroller; use thinkfacadeConfig; use appBaseController;  use thinkfacadeEnv;//引入env類  class Index extends BaseController {            public function getEnv(){         return Env::get('database.username');     }       public function getConfig(){         return Config::get('database.connections.mysql.username');      }      public function getSite(){          echo Env::has('database.username');         echo Config::has('database.connections.mysql.username');     } }

我們得到的值為字符串用echo輸出

推薦學習:《thinkphp

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享