您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”吧!
ThinkPHP是一個(gè)免費(fèi)開(kāi)源的,快速、簡(jiǎn)單的面向?qū)ο蟮?strong>輕量級(jí)PHP開(kāi)發(fā)框架,是為了敏捷WEB應(yīng)用開(kāi)發(fā)和簡(jiǎn)化企業(yè)應(yīng)用開(kāi)發(fā)而誕生的。ThinkPHP從誕生以來(lái)一直秉承簡(jiǎn)潔實(shí)用的設(shè)計(jì)原則,在保持出色的性能和至簡(jiǎn)代碼的同時(shí),更注重易用性。遵循Apache2
開(kāi)源許可協(xié)議發(fā)布,意味著你可以免費(fèi)使用ThinkPHP,甚至允許把你基于ThinkPHP開(kāi)發(fā)的應(yīng)用開(kāi)源或商業(yè)產(chǎn)品發(fā)布/銷(xiāo)售。
TP 框架是免費(fèi)開(kāi)源的、輕量級(jí)的、簡(jiǎn)單快速且敏捷的 PHP 框架
ThinkPHP6.0 要求 PHP 版本是 7.1+以上,官方推薦 7.3
除了 PHP7.1+,還需要開(kāi)啟 PDO 數(shù)據(jù)庫(kù)引擎和 MBstring 字符串?dāng)U展
官網(wǎng)不提供軟件包下載,官方推薦使用composer下載和更新
關(guān)于composer的安裝和使用不做介紹
由于composer默認(rèn)鏡像源在國(guó)外,鏈接速度較慢,因此安裝的時(shí)間可能會(huì)比較長(zhǎng),我們建議使用國(guó)內(nèi)鏡像(阿里云),代碼如下
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
如果你是第一次安裝,或者你需要安裝全新框架,在命令行界面,切換到你需要安裝的WEB目錄,執(zhí)行如下命令
composer create-project topthink/think tp
這里的“tp”是項(xiàng)目的根目錄名,你可以任意更改,這個(gè)就是我們后邊常提到的應(yīng)用根目錄
如果你之前已經(jīng)安裝過(guò),那么切換到你的應(yīng)用根目錄下面,然后執(zhí)行下面的命令進(jìn)行更新
composer update topthink/framework
在cmd命令行進(jìn)入項(xiàng)目目錄運(yùn)行命令
php think run
在瀏覽器輸入: http://127.0.0.1:8000 或 http://localhost:8000你就會(huì)看到歡迎界面
如果 80 端口沒(méi)有被占用的情況下,你也可以直接使用
php think run -p 80
然后你就可以直接使用http://localhost/ 直接訪問(wèn)了,這時(shí)瀏覽器默認(rèn)訪問(wèn)文件是:應(yīng)用根目錄/app/controller/index.php控制器的index方法,而http://localhost/的實(shí)際路徑是http://localhost/index.php/index/index,(具體原因這里不做詳細(xì)解釋,后邊在進(jìn)行探討)
當(dāng)然你現(xiàn)在可以把localhost配置為本地域名進(jìn)行訪問(wèn),這里不做贅述
3.這里以tp.com為例:訪問(wèn)index控制器的index操作
http://tp.com 訪問(wèn)默認(rèn)入口文件、默認(rèn)控制器和默認(rèn)方法
http://tp.com/index.php 指定index.php入口文件,默認(rèn)控制器的默認(rèn)方法
http://tp.com/index.php/index 指定index.php入口文件,index控制器的默認(rèn)方法
http://tp.com/index.php/index/index 指定index.php入口文件,index控制器的index方法
開(kāi)發(fā)規(guī)范沒(méi)什么好講直接參考手冊(cè)官方文檔
目錄結(jié)構(gòu)也沒(méi)必要講直接參考手冊(cè)官方文檔
在項(xiàng)目的開(kāi)發(fā)階段,我們建議開(kāi)啟框架的調(diào)試模式
當(dāng)調(diào)試模式開(kāi)啟后,會(huì)犧牲一部分執(zhí)行效率,但能大大提高我們的 開(kāi)發(fā)排錯(cuò)能力
當(dāng)部署生產(chǎn)環(huán)境時(shí),我們?cè)訇P(guān)閉調(diào)試模式即可
默認(rèn)安裝的tp6.0框架默認(rèn)不開(kāi)啟調(diào)試模式,這時(shí)我們可以在瀏覽器輸入不存在的控制器或錯(cuò)誤的地址進(jìn)行驗(yàn)證
表示調(diào)試未開(kāi)啟
通過(guò)命令行安裝的 TP6.0,會(huì)自動(dòng)在根目錄生成一個(gè).example.env 文件,即環(huán)境變量示例文件,我們只要把這個(gè)文件更名為.env (通常復(fù)制一份更名即可), 即可生效,同時(shí)開(kāi)啟調(diào)試模式
//環(huán)境變量示例文件 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打開(kāi)調(diào)試模式,若要關(guān)閉調(diào)試模式將true改為false,另外還有應(yīng)用配置,數(shù)據(jù)庫(kù)和語(yǔ)言設(shè)置,當(dāng)然你也可以配置更多內(nèi)容
現(xiàn)在我們?cè)谒⑿聞偛诺捻?yè)面,會(huì)提示控制器不存在,并且右下角會(huì)出現(xiàn) Trace 調(diào)試小圖標(biāo),說(shuō)明調(diào)試開(kāi)啟了
開(kāi)啟調(diào)試模式有什么用:
a. 記錄系統(tǒng)運(yùn)行流程的執(zhí)行過(guò)程
b. 展示錯(cuò)誤和調(diào)試信息,并開(kāi)啟日志記錄
c. 模版修改可以及時(shí)生效 ( 不會(huì)被緩存干擾 )
d. 啟動(dòng)右下角的 Trace 調(diào)試功能,更加強(qiáng)大
e. 發(fā)生異常時(shí),也會(huì)顯示異常信息
還有一種模式,就是關(guān)閉調(diào)試的時(shí)候,也可以顯示簡(jiǎn)要的錯(cuò)誤信息,打開(kāi)根目錄下 config 的 app.php 最后一行設(shè)置為true
'show_error_msg' => false,
配置文件有兩種形式:一種是采用.env適用于本地開(kāi)發(fā),另一種就是在根目錄下的config目錄下,包含整個(gè)項(xiàng)目的配置,適用于生產(chǎn)環(huán)境
注意:官方明確表示.env文件部署后會(huì)被忽略,所以它僅適用于本地開(kāi)發(fā)
配置優(yōu)先級(jí),如果在本地測(cè)試時(shí) .env 優(yōu)先于 config,從 config 配置中可以看出,它是先讀取 .env 的,然后再默認(rèn)配置一個(gè)自己的,而部署環(huán)境則忽略.env,只讀取config
開(kāi)開(kāi)發(fā)項(xiàng)目過(guò)程中,我們少不了獲取配置文件中的屬性值,那么我們?cè)趺茨塬@取到這些值呢?接下來(lái)我們以獲取數(shù)據(jù)庫(kù)的用戶名為例
對(duì)于.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 think\facade\Env; return Env::get('database.username'); 我們寫(xiě)一個(gè)getEnv發(fā)方法獲取databases下的username,這個(gè)比較簡(jiǎn)單,直接獲取.env文件下的,database下的username
<?php namespace app\controller; use app\BaseController; use think\facade\Env;//引入env類(lèi) class Index extends BaseController { public function getEnv(){ return Env::get('database.username'); } }
對(duì)于config文件
<?php return [ // 默認(rèn)使用的數(shù)據(jù)庫(kù)連接配置 'default' => env('database.driver', 'mysql'), // 自定義時(shí)間查詢規(guī)則 'time_query_rule' => [], // 自動(dòng)寫(xiě)入時(shí)間戳字段 // true為自動(dòng)識(shí)別類(lèi)型 false關(guān)閉 // 字符串則明確指定時(shí)間字段類(lèi)型 支持 int timestamp datetime date 'auto_timestamp' => true, // 時(shí)間字段取出后的默認(rèn)時(shí)間格式 'datetime_format' => 'Y-m-d H:i:s', // 時(shí)間字段配置 配置格式:create_time,update_time 'datetime_field' => '', // 數(shù)據(jù)庫(kù)連接配置信息 'connections' => [ 'mysql' => [ // 數(shù)據(jù)庫(kù)類(lèi)型 'type' => env('database.type', 'mysql'), // 服務(wù)器地址 'hostname' => env('database.hostname', '127.0.0.1'), // 數(shù)據(jù)庫(kù)名 'database' => env('database.database', ''), // 用戶名 'username' => env('database.username', 'root123'), // 密碼 'password' => env('database.password', ''), // 端口 'hostport' => env('database.hostport', '3306'), // 數(shù)據(jù)庫(kù)連接參數(shù) 'params' => [], // 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8 'charset' => env('database.charset', 'utf8'), // 數(shù)據(jù)庫(kù)表前綴 'prefix' => env('database.prefix', ''), // 數(shù)據(jù)庫(kù)部署方式:0 集中式(單一服務(wù)器),1 分布式(主從服務(wù)器) 'deploy' => 0, // 數(shù)據(jù)庫(kù)讀寫(xiě)是否分離 主從式有效 'rw_separate' => false, // 讀寫(xiě)分離后 主服務(wù)器數(shù)量 'master_num' => 1, // 指定從服務(wù)器序號(hào) 'slave_no' => '', // 是否嚴(yán)格檢查字段是否存在 'fields_strict' => true, // 是否需要斷線重連 'break_reconnect' => false, // 監(jiān)聽(tīng)SQL 'trigger_sql' => env('app_debug', true), // 開(kāi)啟字段緩存 'fields_cache' => false, ], // 更多的數(shù)據(jù)庫(kù)配置信息 ], ];
比如要獲取[DATABASE]下的USERNAME=root獲取方式如下:
use think\facade\Config;
return Config::get('database.connections.mysql.username');
我們寫(xiě)一個(gè)getConfig發(fā)方法獲取databases下的username,這個(gè)就要麻煩一點(diǎn),這里獲取的順序依次是:
所在配置文件——>數(shù)據(jù)庫(kù)連接配置信息——>mysql數(shù)據(jù)庫(kù)——>用戶名
需要注意的是:由于config配置文件的優(yōu)先級(jí)低于.env,所以,如果當(dāng)前是處于開(kāi)發(fā)環(huán)境,如下代碼并不會(huì)獲取到config目錄下database配置文件的用戶名,而是獲取.env文件的用戶名,所以想要獲取正確配置則先關(guān)閉開(kāi)發(fā)環(huán)境
<?php namespace app\controller; use app\BaseController; use think\facade\Env;//引入env類(lèi) 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'); } }
對(duì)于上邊獲取config配置有限讀取.env文件的問(wèn)題,我們可以在獲取信息之前先使用has方法判斷當(dāng)前需要獲取值是否存在兩個(gè)文件再?zèng)Q定讀取哪一個(gè)文件
<?php namespace app\controller; use think\facade\Config; use app\BaseController; use think\facade\Env;//引入env類(lèi) 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輸出
到此,相信大家對(duì)“ThinkPHP6.0入門(mén)知識(shí)點(diǎn)有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。