ThinkPHP8學習篇(一):安裝與配置

ThinkPHP有非常多的功能庫,我的學習策略很明確:不貪多求全,只掌握最核心的20%功能,解決80%的業務需求。所有學習都圍繞一個目標:夠用就行。遇到復雜問題時,再具體學習對應的內容。

作為ThinkPHP學習的第一篇文章,本篇文章將記錄ThinkPHP基礎內容的學習,包括:安裝、目錄結構與配置。


一、安裝

ThinkPHP 8.x 要求 PHP 的版本要大于等于 8.0.0。

1、安裝 Composer

Composer 是 PHP 用來管理依賴(dependency)關系的工具。可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫文件。稍后會使用 Composer 來安裝 ThinkPHP。

在 phpStudy 中安裝 Composer 是非常簡單的,只需要在軟件管理中找到它,然后點擊安裝即可。我這里選擇的是可以安裝的最新的 2.5.8 版本。

2、安裝穩定版?

第一次安裝,在命令行下面,切換到WEB根目錄下面并執行下面的命令:

composer create-project topthink/think 應用名稱

該命令將創建應用根目錄,目錄名稱就是應用名稱。

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

composer update

在 phpStudy 中,點擊 網站->管理->composer,會彈出 composer設置 對話框,它會自動選中當前安裝的 composer 版本,然后點擊 “確認” 按鈕,就會打開命令行界面,且該命令行界面已經切換到WEB根目錄下。

在打開的命令行界面中,我們輸入安裝 ThinkPHP 命令,創建第一個應用,應用命名為:first_tp:?

composer create-project topthink/think first_tp

3、開啟調試模式

應用默認是部署模式,在開發階段,通過修改環境變量APP_DEBUG開啟調試模式,上線部署后切換到部署模式。

通過 create-project 安裝后在根目錄會自帶一個.example.env文件(環境變量示例),我們需要將該文件更名為 .env 文件并根據要求進行修改,該示例文件已經開啟調試模式。所以我們現在需要做的就是將該文件更名為 .env 文件就可以了。

4、測試運行

現在要做最后一步來是驗證能否正常運行。該步操作還是在命令行中執行,具體如下:

cd first_tp # 首先進入 ThinkPHP 應用根目錄
php think run # 執行該命令啟動 ThinkPHP 應用

執行完成命令后,會在啟動消息中看到服務器的訪問地址,默認為:http://localhost:8000。訪問該地址,如果看到了歡迎頁面,那證明安裝成功了。

也可以通過 -p 參數來更改默認啟動的端口號:

php think run -p 端口號

注意:在實際部署中,需要綁定域名訪問到 ThinkPHP 應用根目錄下的 public 目錄。

在 ThinkPHP 官網文檔中,提供了關于 ThinkPHP 的開發規范,關于開發規范的內容在本文中就不做記錄了,可以通過官網 開發規劃 進行查看。

二、目錄結構

ThinkPHP 8.0 版本開始支持多應用模式部署,所以實際的目錄結構取決于采用的是單應用還是多應用模式,默認安裝后的目錄結構就是一個單應用模式。本文將記錄單應用模式。下面我們一起來看下單應用模式的目錄結構。

www  WEB部署目錄(或者子目錄)
├─app           應用目錄
│  ├─controller      控制器目錄
│  ├─model           模型目錄
│  ├─ ...            更多類庫目錄
│  │
│  ├─common.php         公共函數文件
│  └─event.php          事件定義文件
│
├─config                配置目錄
│  ├─app.php            應用配置
│  ├─cache.php          緩存配置
│  ├─console.php        控制臺配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       數據庫配置
│  ├─filesystem.php     文件磁盤配置
│  ├─lang.php           多語言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中間件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  └─view.php           視圖配置
│
├─view            視圖目錄
├─route                 路由定義目錄
│  ├─route.php          路由定義文件
│  └─ ...   
│
├─public                WEB目錄(對外訪問目錄)
│  ├─index.php          入口文件
│  ├─router.php         快速測試文件
│  └─.htaccess          用于apache的重寫
│
├─extend                擴展類庫目錄
├─runtime               應用的運行時目錄(可寫,可定制)
├─vendor                Composer類庫目錄
├─.example.env          環境變量示例文件
├─composer.json         composer 定義文件
├─LICENSE.txt           授權說明文件
├─README.md             README 文件
├─think                 命令行入口文件

默認安裝后,app目錄下會包含下面的文件。

├─app           應用目錄
│  │
│  ├─BaseController.php    默認基礎控制器類
│  ├─ExceptionHandle.php   應用異常定義文件
│  ├─common.php            全局公共函數文件
│  ├─middleware.php        全局中間件定義文件
│  ├─provider.php          服務提供定義文件
│  ├─Request.php           應用請求對象
│  └─event.php             全局事件定義文件

?BaseController.php、Request.php 和 ExceptionHandle.php 三個文件是系統默認提供的基礎文件,位置可以隨意移動,但注意要同步調整類的命名空間。如果不需要使用 Request.php 和 ExceptionHandle.php文件,或者要調整類名,記得必須同步調整 provider.php 文件中的容器對象綁定。

provider.php 服務提供定義文件只能全局定義,不支持在應用下單獨定義。

三、配置?

對于單應用模式來說,配置文件和目錄很簡單,根目錄下的 config 目錄下面就是所有的配置文件。每個配置文件對應不同的組件,當然也可以增加自定義的配置文件。

├─config(配置目錄)
│  ├─app.php            應用配置
│  ├─cache.php          緩存配置
│  ├─console.php        控制臺配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       數據庫配置
│  ├─filesystem.php     文件磁盤配置
│  ├─lang.php           多語言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中間件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  ├─view.php           視圖配置
│  └─ ...               更多配置文件
│  

單應用模式的 config 目錄下的所有配置文件系統都會自動讀取,不需要手動加載。如果存在子目錄,需要通過 Config 類的 load 方法手動加載,例如:

// 加載config/extra/config.php 配置文件 讀取到extra
\think\facade\Config::load('extra/config', 'extra');

可以直接在相應的全局或應用配置文件中修改或者增加配置參數,如果要增加額外的配置文件,直接放入配置目錄即可(文件名小寫)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917462.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python練習】075. 編寫一個函數,實現簡單的語音識別功能

075. 編寫一個函數,實現簡單的語音識別功能 075. 編寫一個函數,實現簡單的語音識別功能 安裝依賴庫 示例代碼 代碼說明 示例輸出 注意事項 使用 PocketSphinx 進行離線語音識別 注意事項 實現方法 使用SpeechRecognition庫實現語音識別 使用PyAudio和深度學習模型 使用Vosk離…

chrome的數據采集插件chat4data的使用

簡介: Chat4Data是一款Chrome擴展插件,支持AI網頁數據采集與分析。用戶可通過Chrome應用商店安裝后,在網頁上選擇區塊和字段進行數據抓取,設置采集頁數后導出結果。該工具適用于結構化數據提取,操作簡便,為…

《人形機器人的覺醒:技術革命與碳基未來》——類人關節設計:人工肌肉研發進展及一款超生物肌肉Hypermusclet的設計與制造

目錄:一、人工股肉的不同種類及工作原理和比較優勢二、人工肌肉研發的重點難點及成果進展和趨勢三、人工肌肉主要研發機構及其研發成果四、人工肌肉主要性能檢測表征能力及標準體系建設五、人工肌肉主要制造商及其產品性能優勢和供應能力六、人工肌肉在機器人市場應…

【人工智能】AI代理的倫理迷局:自主智能體的責任歸屬之謎

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 在人工智能時代,AI代理作為自主決策的代表,正深刻改變著人類社會。然而,其倫理困境日益凸顯:當AI代理做出自主決策時,誰應為其后果負責…

C語言數據結構(6)貪吃蛇項目1.貪吃蛇項目介紹

1. 游戲背景 貪吃蛇是久負盛名的游戲,它也和俄羅斯方塊,掃雷等游戲位列經典游戲的行列。 在編程語言的教學中,我們以貪吃蛇為例,從設計到代碼實現來提升學生的編程能力和邏輯能力。 2. 游戲效果演示 3. 項目目標 使用C語言…

神經網絡的并行計算與加速技術

神經網絡的并行計算與加速技術一、引言隨著人工智能技術的飛速發展,神經網絡在眾多領域展現出了巨大的潛力和廣泛的應用前景。然而,神經網絡模型的復雜度和規模也在不斷增加,這使得傳統的串行計算方式面臨著巨大的挑戰,如計算速度…

工廠方法模式:從基礎到C++實現

引言 在軟件開發中,設計模式是解決常見問題的經過驗證的方案。其中,工廠方法模式是一種創建型設計模式,廣泛應用于需要動態創建對象的場景。本文將詳細介紹工廠方法模式的核心概念、應用場景,并通過C代碼示例展示其具體實現。 核心…

我的世界進階模組開發教程——傷害(2)

上一篇文章簡要的講述了傷害,這一篇文章就來講一下機械動力的傷害 機械動力源碼 DamageTypeBuilder 類定義與成員變量 public class DamageTypeBuilder {protected final ResourceKey<DamageType> key; // 傷害類型的唯一資源標識符

web前端第一次作業

一、用戶注冊界面作業要求: 1.用戶名為文本框&#xff0c;名稱為 UserName&#xff0c;長度為 15&#xff0c;最大字符數為 20 2.密碼為密碼框&#xff0c;名稱為 UserPass&#xff0c;長度為 15&#xff0c;最大字符數為 20 3.性別為兩個單選按鈕&#xff0c;名稱為 sex&#…

Jenkins 節點連接故障定位及解決方案總結 - PKIX path validation failed

一、故障現象 Jenkins 節點通過 Java Web 方式連接時&#xff0c;報錯&#xff1a; java.io.IOException: Failed to connect to https://xxxx.zte.com.cn/yyyy/tcpSlaveAgentListener/: PKIX path validation failed: java.security.cert.CertPathValidatorException: validit…

c++ --- priority_queue的使用以及簡單實現

C --- priority_queue前言一、priority_queue的使用二、priority_queue的簡單實現1.整體結構2.主要方法pushpoptopemptysize三、構造迭代器區間構造默認構造四、仿函數前言 priority_queue是C容器之一&#xff0c;意為優先級隊列&#xff0c;雖說叫做隊列&#xff0c;但是其底…

MySQL梳理三:查詢與優化

MySQL查詢優化完整指南&#xff1a;從理論到實踐 本文從MySQL查詢的基礎機制出發&#xff0c;深入探討單表查詢訪問方法、聯表查詢策略、成本計算原理、基于規則的優化技術&#xff0c;最后通過實際案例展示慢SQL的診斷和優化過程。 目錄 一、單表查詢的訪問方法二、聯表查詢機…

從零開始的python學習(九)P129+P130+P131+P132+P133

本文章記錄觀看B站python教程學習筆記和實踐感悟&#xff0c;視頻鏈接&#xff1a;【花了2萬多買的Python教程全套&#xff0c;現在分享給大家&#xff0c;入門到精通(Python全棧開發教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

LCL濾波器及其電容電流前饋有源阻尼設計軟件【LCLAD_designer】

本文主要介紹針對阮新波著《LCL型并網逆變器的控制技術》書籍 第二章&#xff08;LCL濾波器設計&#xff09;及第五章&#xff08;LCL型并網逆變器的電容電流反饋有源阻尼設計&#xff09;開發的一款交互式軟件【LCL&AD_designer】&#xff0c;開發平臺MATLAB_R2022b/app d…

【Conda】配置Conda鏡像源

Conda 鏡像源配置指南 適用系統&#xff1a;Windows 10&#xff08;含 Miniconda / Anaconda&#xff09; & Linux&#xff08;Ubuntu / CentOS / Debian 等&#xff09;1. 為什么要設置鏡像源 在中國大陸直接訪問 repo.anaconda.com 經常遇到速度慢、連接超時、SSL 錯誤等…

八股取士--docker

基礎概念類 1. 什么是Docker&#xff1f;它解決了什么問題&#xff1f; 解析&#xff1a; Docker是一個開源的容器化平臺&#xff0c;用于開發、交付和運行應用程序。 主要解決的問題&#xff1a; 環境一致性&#xff1a;解決"在我機器上能跑"的問題資源利用率&#…

C++:STL中的棧和隊列的適配器deque

學習完string類、容器vector和容器list&#xff0c;再去學習其他容器的學習成本就非常低&#xff0c;容器的使用方法都大差不差&#xff0c;而棧和隊列的底層使用了適配器&#xff0c;去模擬實現就沒有那么麻煩&#xff0c;適配器也是一種容器&#xff0c;但是這種容器兼備棧和…

9類主流數據庫 - 幫你更好地進行數據庫選型!

作者&#xff1a;唐叔在學習 專欄&#xff1a;數據庫學習 標簽&#xff1a;數據庫選型、MySQL、Redis、MongoDB、大數據存儲、NoSQL、數據庫優化、數據架構、AI數據庫 大家好&#xff0c;我是你們的老朋友唐叔&#xff01;今天咱們來聊聊程序員吃飯的家伙之一 —— 數據庫。在這…

推送本地項目到Gitee遠程倉庫

文章目錄前言前面已加學習了下載gitee軟件&#xff0c;網址在上一篇文章。在gitee創建賬號與倉庫。現在來學習如何講本地項目推送到Gitee遠程倉庫一、流程總結前言 前面已加學習了下載gitee軟件&#xff0c;網址在上一篇文章。在gitee創建賬號與倉庫。現在來學習如何講本地項目…

CMake 命令行參數完全指南(5)

?**40. --version**? ?解釋?&#xff1a;顯示CMake版本 ?示例?&#xff1a; cmake --version # 輸出&#xff1a;cmake version 3.25.2?**41. --warn-uninitialized**? ?解釋?&#xff1a;警告未初始化的變量 ?適用場景?&#xff1a;檢測腳本錯誤 ?示例?&#xf…