站長(zhǎng)推薦學(xué)習(xí)ThinkPHP6.0 入門必讀
2023-01-04 加入收藏
ThinkPHP6.0
是基于現(xiàn)代主流開(kāi)發(fā)思想而設(shè)計(jì)的全新架構(gòu)版本,集簡(jiǎn)單、規(guī)范、優(yōu)雅和性能于一身,是今后很長(zhǎng)一段時(shí)間主要維護(hù)的版本。
在學(xué)習(xí)ThinkPHP6.0
之前,你必須要掌握的技能包括:
PHP7
基礎(chǔ)知識(shí):新版基于PHP7.1+
開(kāi)發(fā),運(yùn)用了很多PHP7的新特性;composer
安裝和使用:新版必須通過(guò)Composer
才能安裝;運(yùn)行環(huán)境安裝:運(yùn)行環(huán)境是一道學(xué)習(xí)的門檻;
面向?qū)ο缶幊蹋∣OP)思想:思想入門比代碼入門更為關(guān)鍵;
本書(shū)內(nèi)容包含三個(gè)部分:
入門必讀: 快速了解
6.0
的功能使用代碼規(guī)范: 開(kāi)發(fā)規(guī)范以及代碼建議
常見(jiàn)問(wèn)題: 新手的常見(jiàn)問(wèn)題整理
6.0
主要新特性采用
PHP7
強(qiáng)類型(嚴(yán)格模式)支持更多的
PSR
規(guī)范多應(yīng)用支持
ORM
組件獨(dú)立改進(jìn)的中間件機(jī)制
更強(qiáng)大和易用的查詢
全新的事件系統(tǒng)
支持容器
invoke
回調(diào)模板引擎組件獨(dú)立
內(nèi)部功能中間件化
SESSION機(jī)制改進(jìn)
緩存及日志支持多通道
引入
Filesystem
組件對(duì)
Swoole
以及協(xié)程支持改進(jìn)對(duì)IDE更加友好
統(tǒng)一和精簡(jiǎn)大量用法
在主流框架里面,ThinkPHP
6.0
是最先采用PHP7嚴(yán)格模式的。但強(qiáng)類型本身也是一把雙刃劍,如果不能很好駕馭,可能會(huì)非常被動(dòng),所以強(qiáng)烈建議新手首先去惡補(bǔ)下PHP7的強(qiáng)類型,以免被強(qiáng)類型弄得暈頭轉(zhuǎn)向的。
所有的核心文件都是開(kāi)啟了嚴(yán)格模式的類型約束,因此有任何的變量類型不符的情況都會(huì)拋出異常,有利于規(guī)范代碼中的變量類型和提前發(fā)現(xiàn)問(wèn)題隱患。我們也建議你的項(xiàng)目文件也同樣開(kāi)啟嚴(yán)格模式,只需要在你的PHP文件開(kāi)頭增加下面一行代碼。
declare (strict_types = 1);
更規(guī)范
規(guī)范兩個(gè)字看起來(lái)很簡(jiǎn)單,實(shí)則有如打通任督二脈一般至關(guān)重要。由于采用了Composer依賴開(kāi)發(fā)和功能組件化,核心的每個(gè)組件更易維護(hù)和更新,也更方便擴(kuò)展和替換核心功能。每個(gè)組件和接口都提供了相應(yīng)的規(guī)范,或者是遵守了某些規(guī)范,諸如PSR
之類。
對(duì)于數(shù)據(jù)庫(kù)、日志、緩存及Session
等組件都提供了契約接口,很容易擴(kuò)展。
此次精簡(jiǎn)和統(tǒng)一了原有版本某個(gè)功能的多種用法,使得團(tuán)隊(duì)開(kāi)發(fā)制定規(guī)范的時(shí)候更容易和避免濫用。
規(guī)范的另外一層含義是不允許對(duì)框架指定的規(guī)則進(jìn)行破壞,所以你會(huì)看到很多原本可以支持的新版里面不再進(jìn)行支持了,一方面是這些功能都不再建議使用,另外一方面可能是禁止濫用而破壞規(guī)范和統(tǒng)一性。
更強(qiáng)大
雖然核心精簡(jiǎn)了,但不代表系統(tǒng)的功能減弱了,底層架構(gòu)的設(shè)計(jì)其實(shí)是變復(fù)雜了,外表看起來(lái)越是易用的其實(shí)內(nèi)部架構(gòu)越是復(fù)雜,新版完全重新設(shè)計(jì)了框架的底層架構(gòu),考慮到了HTTP以及命令行,以及各種長(zhǎng)連接及協(xié)程的支持,事實(shí)上由于中間件、系統(tǒng)服務(wù)和事件機(jī)制的引入,使核心功能變得更易擴(kuò)展,很多原本內(nèi)置的功能都已經(jīng)改成中間件的方式即“插”即用,當(dāng)不需要的時(shí)候可以很容易關(guān)閉而不會(huì)影響系統(tǒng)的性能。
通過(guò)注冊(cè)服務(wù)可以讓系統(tǒng)變得更靈活和易擴(kuò)展。分層的中間件執(zhí)行機(jī)制,讓中間件變得更有層次,可以更好的確保中間件的執(zhí)行優(yōu)先次序。而事件的觀察者和訂閱機(jī)制,儼然就是一個(gè)項(xiàng)目解耦神器。
更易用
一個(gè)框架如果喪失了易用性這一前提,哪怕功能再?gòu)?qiáng)大也難成大器。新版盡量減少一些不必要的配置,并且改進(jìn)了一些更為直觀的配置定義。助手函數(shù)、IDE助手、注解擴(kuò)展、調(diào)試工具、異常頁(yè)面的諸多細(xì)節(jié)改善都體現(xiàn)了一個(gè)框架的易用性。
關(guān)于安裝
6.0
版本基于PHP7.1
版本開(kāi)發(fā),所以你的PHP運(yùn)行環(huán)境必須是PHP7.1+
(注意有時(shí)候你的命令行和WEB的PHP版本是不同的),最新版本已經(jīng)兼容PHP8.0
。
新版必須使用
composer
安裝,因?yàn)?code style="margin: 0px 5px;padding: 2px 6px;outline: 0px;max-width: 100%;box-sizing: inherit;overflow-wrap: break-word !important;white-space: pre-wrap;-webkit-tap-highlight-color: transparent;text-size-adjust: none;-webkit-font-smoothing: antialiased;font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size: 1em;display: inline-block;border-radius: 4px;background: rgb(249, 250, 250);line-height: 1.3;border-width: 1px;border-style: solid;border-color: rgb(222, 217, 217)">6.0完全依賴composer
使用,如果你通過(guò)git下載安裝將不能正常使用。如果你使用composer
安裝ThinkPHP過(guò)程特別慢,請(qǐng)使用阿里云鏡像或者科學(xué)上網(wǎng)。
對(duì)于新手而言,推薦的安裝方式是
composer create-project topthink/think tp
系統(tǒng)會(huì)自動(dòng)為你生成一個(gè)項(xiàng)目所需要的目錄架構(gòu)和需要的文件。
記住,無(wú)論如何,不要在項(xiàng)目里面修改核心框架目錄下的任何文件,除了vendor
目錄之外的其它目錄都屬于你的項(xiàng)目代碼,可以隨意修改。
安裝完成之后,進(jìn)入cmd
控制臺(tái),使用內(nèi)置指令啟動(dòng)服務(wù)。
cd tpphp think run
現(xiàn)在你可以開(kāi)始你的TP6開(kāi)發(fā)之旅了。
在瀏覽器里面輸入
http://localhost:8000
就會(huì)看到熟悉的歡迎頁(yè)面(并顯示當(dāng)前安裝的版本號(hào))
如果需要更改默認(rèn)端口,可以使用
php think run -p 80
請(qǐng)確保端口沒(méi)有被占用。
目錄結(jié)構(gòu)
默認(rèn)安裝后的目錄結(jié)構(gòu)如下:
www WEB部署目錄(或者子目錄)
├─app 應(yīng)用目錄
│ ├─controller 控制器目錄
│ ├─common.php 公共函數(shù)文件
│ ├─event.php 事件定義文件
│ ├─ExceptionHandle.php應(yīng)用異常處理類
│ ├─middleware.php 全局中間件定義文件
│ ├─provider.php 容器綁定定義文件
│ └─Request.php 應(yīng)用請(qǐng)求對(duì)象類
│
├─config 配置目錄
│ ├─app.php 應(yīng)用配置
│ ├─cache.php 緩存配置
│ ├─console.php 控制臺(tái)配置
│ ├─cookie.php Cookie配置
│ ├─database.php 數(shù)據(jù)庫(kù)配置
│ ├─filesystem.php 文件磁盤配置
│ ├─lang.php 多語(yǔ)言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中間件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 視圖配置
│
├─view 視圖目錄
├─route 路由定義目錄
│ ├─route.php 路由定義文件
│ └─ ...
│
├─public WEB目錄(對(duì)外訪問(wèn)目錄)
│ ├─index.php 入口文件
│ ├─router.php 快速測(cè)試文件
│ └─.htaccess 用于apache的重寫
│
├─extend 擴(kuò)展類庫(kù)目錄
├─runtime 應(yīng)用的運(yùn)行時(shí)目錄(可寫,可定制)
├─vendor 第三方類庫(kù)目錄(Composer依賴庫(kù))
├─.example.env 環(huán)境變量示例定義文件(參考)
├─composer.json composer 定義文件
├─LICENSE.txt 授權(quán)說(shuō)明文件
├─README.md README 文件
├─think 命令行入口文件
本文僅搬運(yùn)最基本的介紹,更詳細(xì)的入門知識(shí),我已經(jīng)購(gòu)買了文檔,還在學(xué)習(xí)中,后期更新吧。