ThinkPHP8極簡上手指南:開啟高效開發之旅

目錄

  • 一、環境搭建
    • 1.1 安裝 PHP
    • 1.2 安裝 Composer
  • 二、安裝 ThinkPHP8
  • 三、目錄結構解析
  • 四、第一個簡單示例:Hello, ThinkPHP8
    • 4.1 創建控制器
    • 4.2 編寫控制器方法
    • 4.3 配置路由
    • 4.4 訪問測試
  • 五、進階示例:數據庫查詢
    • 5.1 配置數據庫連接
    • 5.2 創建模型
    • 5.3 編寫查詢代碼
    • 5.4 展示查詢結果
  • 六、總結與展望


一、環境搭建

在開始使用 ThinkPHP8 開發項目之前,我們需要先搭建好開發環境,主要包括安裝 PHP 和 Composer。

1.1 安裝 PHP

ThinkPHP8 要求 PHP 版本為 8.0.0 及以上,你可以從PHP 官方網站下載對應操作系統的 PHP 安裝包。

以 Windows 系統為例,下載完成后,將安裝包解壓到你希望安裝的目錄,比如C:\php。然后,將該目錄添加到系統環境變量中,這使你可以在命令行中使用 PHP 命令。具體操作步驟如下:

  1. 右鍵點擊 “此電腦”,選擇 “屬性”。
  2. 在彈出的窗口中,點擊 “高級系統設置”。
  3. 在 “系統屬性” 窗口中,點擊 “環境變量” 按鈕。
  4. 在 “系統變量” 中找到 “Path” 變量,點擊 “編輯”。
  5. 在彈出的 “編輯環境變量” 窗口中,點擊 “新建”,添加 PHP 的安裝目錄,如C:\php,然后點擊 “確定” 保存設置。

接著,在 PHP 安裝目錄中找到并復制php.ini-development文件,將其重命名為php.ini。你可以根據需要編輯php.ini文件以配置 PHP,比如設置時區等。例如,將;date.timezone =修改為date.timezone = Asia/Shanghai。

最后,打開命令行,輸入php -v命令,確認 PHP 是否成功安裝。如果成功安裝,會顯示 PHP 的版本信息。

1.2 安裝 Composer

Composer 是 PHP 的依賴管理工具,用于管理項目中的 PHP 庫和包的依賴關系,ThinkPHP8 的安裝依賴于 Composer。

在 Linux 和 Mac OS X 中,可以運行以下命令來安裝 Composer:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

在 Windows 中,需要下載并運行Composer-Setup.exe來安裝 Composer。安裝過程中,按照提示進行操作即可,安裝完成后,Composer 會自動添加到系統環境變量中,你可以在命令行中直接使用composer命令。

驗證 Composer 是否安裝成功,打開命令行,輸入composer -V,如果成功安裝,會顯示 Composer 的版本信息。

二、安裝 ThinkPHP8

當 PHP 和 Composer 安裝完成后,就可以使用 Composer 來安裝 ThinkPHP8 項目了。

打開命令行工具,切換到你希望創建項目的目錄,例如 Web 服務器的根目錄。如果是在 Windows 系統下,假設 Web 服務器根目錄為C:\xampp\htdocs,可以使用cd命令切換到該目錄:

cd C:\xampp\htdocs

然后,執行 Composer 安裝命令:

composer create-project topthink/think myproject

這里myproject是你的項目名稱,你可以根據實際情況自定義。執行該命令后,Composer 會從遠程倉庫下載 ThinkPHP8 及其依賴的庫,并將項目文件安裝到myproject目錄下,這個過程可能需要一些時間,具體時長取決于你的網絡狀況。

在安裝過程中,如果遇到網絡問題導致下載緩慢或失敗,可以考慮切換到國內的 Composer 鏡像源,例如阿里云鏡像。切換命令如下:

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

切換完成后,再次執行安裝命令即可。

安裝完成后,在你指定的目錄下會生成一個名為myproject的文件夾,這就是你的 ThinkPHP8 項目目錄,其目錄結構如下:

  • app:應用目錄,存放應用的控制器、模型、視圖等核心代碼。
  • config:配置目錄,包含應用的各種配置文件,如數據庫配置、路由配置等。
  • public:公共目錄,對外訪問的入口,其中的index.php是整個應用的入口文件。
  • runtime:運行時目錄,存放應用運行時生成的緩存文件、日志文件等。
  • vendor:第三方類庫目錄,Composer 安裝的所有依賴庫都存放在這里。
  • .env:環境配置文件,用于配置應用的運行環境參數,如調試模式、數據庫連接信息等。

三、目錄結構解析

深入了解 ThinkPHP8 項目的目錄結構,有助于我們更好地組織和管理代碼,提高開發效率。下面詳細介紹各主要目錄的作用:

  1. app目錄:應用目錄是存放核心業務邏輯的地方,是整個項目的核心所在。在app目錄下,通常包含以下子目錄:
    • controller:控制器目錄,用于存放控制器類文件。控制器負責接收用戶請求,調用模型獲取數據,并將數據傳遞給視圖進行展示。例如,我們創建一個IndexController類,用于處理網站首頁的請求,代碼如下:
<?php
namespace app\controller;class IndexController
{public function index(){return '這是ThinkPHP8的首頁';}
}
  • model:模型目錄,存放與數據庫交互的模型類文件。模型用于封裝數據操作邏輯,如數據的讀取、插入、更新和刪除等。假設我們有一個User模型,用于操作用戶表數據,示例代碼如下:
<?php
namespace app\model;use think\Model;class User extends Model
{// 定義模型與數據庫表的對應關系,若表名與模型名一致,可省略此方法protected $table = 'user';
}
  • view:視圖目錄,用于存放視圖文件,即 HTML 模板文件。視圖負責將數據展示給用戶,通常與控制器配合使用。例如,index控制器對應的視圖文件index.html可放在view/index目錄下。
  1. config目錄:配置目錄包含應用的各種配置文件,這些配置文件以 PHP 數組的形式存在,用于設置應用的各項參數和行為。常見的配置文件有:
    • app.php:應用配置文件,設置應用的基本信息,如應用命名空間、默認時區、是否開啟調試模式等。例如,設置調試模式的代碼如下:
return [// 應用調試模式'app_debug' => true,
];
  • database.php:數據庫配置文件,配置數據庫連接信息,包括數據庫類型、主機地址、端口、用戶名、密碼和數據庫名等。以 MySQL 數據庫為例,配置示例如下:
return [// 數據庫類型'type'            =>'mysql',// 服務器地址'hostname'        => '127.0.0.1',// 數據庫名'database'        => 'your_database_name',// 用戶名'username'        => 'root',// 密碼'password'        => 'your_password',// 端口'hostport'        => '3306',// 數據庫連接參數'params'          => [],// 數據庫編碼默認采用utf8'charset'         => 'utf8',
];
  • route.php:路由配置文件,定義 URL 地址與控制器方法的映射關系。通過路由配置,可以實現更靈活的 URL 訪問方式,提高應用的可讀性和維護性。例如,定義一個簡單的路由規則:
use think\facade\Route;Route::get('index', 'app\controller\IndexController@index');
  1. public目錄:公共目錄是應用對外訪問的入口,其中的index.php是整個應用的入口文件。所有的 HTTP 請求都會首先經過index.php,然后由它來加載框架核心文件,初始化應用環境,并將請求分發給相應的控制器進行處理。此外,public目錄還可以存放一些靜態資源文件,如 CSS、JavaScript 和圖片等,這些文件可以直接通過 URL 進行訪問。
  2. runtime目錄:運行時目錄用于存放應用運行時生成的文件,如緩存文件、日志文件、編譯文件等。框架在運行過程中會自動生成這些文件,以提高應用的性能和穩定性。例如,緩存文件可以加快數據的讀取速度,日志文件用于記錄應用的運行日志,方便調試和排查問題。
  3. vendor目錄:第三方類庫目錄,Composer 安裝的所有依賴庫都存放在這里。在開發過程中,我們可以通過 Composer 安裝各種第三方類庫,如數據庫操作庫、郵件發送庫等,這些類庫會被安裝到vendor目錄下,方便我們在項目中使用。
  4. .env文件:環境配置文件,用于配置應用的運行環境參數。通過.env文件,可以方便地切換不同的環境配置,如開發環境、測試環境和生產環境等。例如,在開發環境中,可以開啟調試模式,方便查看錯誤信息;在生產環境中,關閉調試模式,提高應用的安全性。.env文件的示例內容如下:
# 開啟調試模式
APP_DEBUG=true
# 數據庫配置
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=your_database_name
DB_USER=root
DB_PASS=your_password
DB_PORT=3306
DB_CHARSET=utf8

四、第一個簡單示例:Hello, ThinkPHP8

接下來,我們通過一個簡單的示例來展示如何使用 ThinkPHP8 進行開發。這個示例將實現一個基本的 “Hello, ThinkPHP8” 頁面,通過瀏覽器訪問項目時,頁面會顯示該字符串。

4.1 創建控制器

在app/controller目錄下創建一個控制器文件,命名為IndexController.php。你可以使用文本編輯器或集成開發環境(IDE)來創建和編輯文件。如果使用命令行工具,在項目根目錄下執行以下命令:

php think make:controller Index

上述命令會自動在app/controller目錄下生成IndexController.php文件,并填充一些基本的代碼結構。

4.2 編寫控制器方法

打開IndexController.php文件,編寫一個用于返回 “Hello, ThinkPHP8” 字符串的方法。在控制器類中添加如下代碼:

<?php
namespace app\controller;class IndexController
{public function hello(){return 'Hello, ThinkPHP8';}
}

在上述代碼中,我們定義了一個IndexController控制器類,其中包含一個hello方法,該方法直接返回一個字符串Hello, ThinkPHP8。

4.3 配置路由

在 ThinkPHP8 中,需要配置路由才能通過 URL 訪問到控制器中的方法。打開config/route.php文件,添加如下路由規則:

use think\facade\Route;Route::get('hello', 'app\controller\IndexController@hello');

這段代碼定義了一個GET請求的路由規則,當用戶訪問/hello這個 URL 時,會調用app\controller\IndexController控制器類中的hello方法。

4.4 訪問測試

完成上述步驟后,就可以通過瀏覽器訪問項目來測試這個簡單示例了。進入命令行下面,執行下面指令:

php think run

在瀏覽器地址欄中輸入:

http://127.0.0.1:8000/hello

如果一切配置正確,瀏覽器頁面將顯示Hello, ThinkPHP8,這表明你已經成功完成了第一個 ThinkPHP8 示例。

五、進階示例:數據庫查詢

在實際應用開發中,數據庫操作是非常常見的需求。下面我們將通過一個進階示例,展示如何在 ThinkPHP8 中進行數據庫查詢。

5.1 配置數據庫連接

在使用數據庫之前,需要先配置數據庫連接信息。可以在.env文件或config/database.php中進行配置。以 MySQL 數據庫為例,在.env文件中添加如下配置:

DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=your_database_name
DB_USER=root
DB_PASS=your_password
DB_PORT=3306
DB_CHARSET=utf8

如果直接在config/database.php中配置,則代碼如下:

return [// 數據庫類型'type'            =>'mysql',// 服務器地址'hostname'        => '127.0.0.1',// 數據庫名'database'        => 'your_database_name',// 用戶名'username'        => 'root',// 密碼'password'        => 'your_password',// 端口'hostport'        => '3306',// 數據庫連接參數'params'          => [],// 數據庫編碼默認采用utf8'charset'         => 'utf8',
];

請根據實際的數據庫信息,修改上述配置中的數據庫名、用戶名、密碼等參數。

5.2 創建模型

在app/model目錄下創建對應數據庫表的模型文件。假設數據庫中有一張名為users的用戶表,我們來創建User模型。在app/model目錄下創建User.php文件,代碼如下:

<?php
namespace app\model;use think\Model;class User extends Model
{// 如果表名與模型名不一致,可通過此屬性指定表名protected $table = 'users';
}

上述代碼定義了一個User模型類,繼承自think\Model,并通過protected table屬性指定了對應的數據庫表名為users。如果表名與模型名一致(不包含前綴),則可以省略table屬性指定了對應的數據庫表名為users。如果表名與模型名一致(不包含前綴),則可以省略table屬性指定了對應的數據庫表名為users。如果表名與模型名一致(不包含前綴),則可以省略table屬性的定義。

5.3 編寫查詢代碼

在控制器中使用模型進行數據庫查詢。在app/controller目錄下創建UserController.php文件,編寫如下代碼:

<?php
namespace app\controller;use app\model\User;
use think\facade\View;class UserController
{public function index(){// 查詢所有用戶數據$users = User::all();// 將查詢結果傳遞給視圖View::assign('users', $users);return view();}
}

在上述代碼中,首先通過use app\model\User;引入User模型類,然后在index方法中使用User::all()方法查詢users表中的所有數據,并將結果賦值給$users變量。接著,使用View::assign(‘users’, users);將users);將users);users變量傳遞給視圖,最后通過return view();渲染并返回視圖。

5.4 展示查詢結果

在app/view目錄下創建user子目錄(與控制器名對應),并在其中創建index.html視圖文件(與控制器方法名對應),用于展示查詢結果。index.html文件代碼如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>用戶列表</title>
</head>
<body><h1>用戶列表</h1><table border="1"><thead><tr><th>ID</th><th>用戶名</th><!-- 根據實際表結構添加更多列 --></tr></thead><tbody>{foreach $users as $user}<tr><td>{$user.id}</td><td>{$user.username}</td><!-- 根據實際表結構輸出更多字段 --></tr>{/foreach}</tbody></table>
</body>
</html>

上述代碼使用了 ThinkPHP8 內置的模板引擎語法。通過{foreach $users as KaTeX parse error: Expected 'EOF', got '}' at position 5: user}?循環遍歷從控制器傳遞過來的users數據,并將每個用戶的id和username(假設表中有這兩個字段)輸出到 HTML 表格中。請根據實際的表結構,修改表格的表頭和字段輸出部分。

最后,配置路由以訪問UserController的index方法。在config/route.php文件中添加如下路由規則:

use think\facade\Route;Route::get('user', 'app\controller\UserController@index');

這樣,當用戶訪問http://127.0.0.1:8000/user時,就可以看到從數據庫中查詢并展示的用戶列表頁面了。

六、總結與展望

通過以上步驟,我們成功完成了用 ThinkPHP8 開發簡單示例以及數據庫查詢的進階示例。在開發過程中,我們掌握了 ThinkPHP8 的環境搭建、目錄結構、路由配置、控制器編寫、模型使用以及數據庫操作等關鍵知識點。ThinkPHP8 以其簡潔的語法、高效的性能和豐富的功能,為 PHP 開發者提供了一個強大的開發框架,大大提高了開發效率。

然而,這僅僅是 ThinkPHP8 的冰山一角,框架還擁有眾多強大的功能等待你去挖掘,比如中間件、事件機制、緩存處理、任務調度等。這些功能在實際項目開發中能夠發揮重要作用,幫助你構建更加健壯、高效和靈活的 Web 應用。

希望你能以本文為起點,繼續深入學習 ThinkPHP8 框架,不斷探索其更多的可能性,將所學知識運用到實際項目中,創造出優秀的 Web 應用。如果你在學習過程中遇到任何問題,歡迎查閱 ThinkPHP8 官方文檔,也可以在相關技術社區與其他開發者交流探討。

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

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

相關文章

智能制造之物料詳解

在制造業業務系統中&#xff0c;物料流轉貫穿“需求→采購→入庫→生產→成品→交付”全流程&#xff0c;各系統通過數據協同實現物料狀態、位置、數量的精準追蹤。以下按流轉階段拆解&#xff1a;一、需求發起與計劃階段&#xff08;CRM/ERP/PLM主導&#xff09;1. 需求源頭…

Qt的安裝和環境配置

QT開發環境的搭建&#xff0c;需要安裝3個部分&#xff0c;C編譯器、Qt SDK(SDK是軟件開發工具包)、QT的集成開發環境(IDE)Qt的3種集成開發環境&#xff1a;Qt Creator&#xff1a;是由Qt官方提供的&#xff0c;容易上手&#xff0c;不需要額外的配置&#xff0c;但是有一些bug…

解析MCUboot的實現原理和Image結構

目錄 概述 1 MCUboot的功能 1.1 代碼包結構 1.2 限制 2 MCUboot Image 2.1 Image格式 2.2 Flash Map 2.3 Image 槽 2.4 使用scratch交換 2.5 Image 尾部數據結構 3 交換區 3.1 單交換區 3.2 Multiple Image boot 3.3 Image交換 4 交換狀態&#xff08;swap statu…

YOLOv8目標檢測項目代碼詳解與習題

YOLOv8目標檢測項目代碼詳解與習題一、項目代碼詳解該代碼是基于 YOLOv8 和 OpenCV 實現的圖像目標檢測項目&#xff0c;核心功能是加載預訓練的 YOLOv8 模型&#xff0c;對指定圖像進行目標檢測&#xff0c;然后可視化檢測結果并保存或顯示。以下是逐行解析&#xff1a;# -*- …

gradle關于dependency-management的使用

1、相關文檔Spring官方文檔&#xff1a;https://docs.spring.io/dependency-management-plugin/docs/current-SNAPSHOT/reference/html/#introduction倉庫版本查看&#xff1a;https://mvnrepository.com/artifact/io.spring.gradle/dependency-management-plugin/1.0.15.RELEA…

Java SpringBoot 對接FreeSwitch

1.增加Maven依賴<dependency><groupId>org.freeswitch.esl.client</groupId><artifactId>org.freeswitch.esl.client</artifactId><version>0.9.2</version></dependency><!-- XML-RPC --><dependency><groupI…

限流算法與實現

費曼學習法學習限流算法為什么要限流mysql插入600次/秒超過這個閾值&#xff0c;要么使用mysql集群、要么限流&#xff0c;防止宕機有哪些算法固定窗口就是個計數器&#xff0c;一秒內超過閾值&#xff0c;不允許訪問缺點&#xff1a;不均勻&#xff0c;跨越臨界點的一秒內&…

Android本地瀏覽PDF(Android PDF.js 簡要學習手冊)

環境 Min SDK: 21 依賴&#xff1a; implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1" implementation "androidx.webkit:webkit:1.12.0"權限&#xff1a; <uses-permission android:name"android.permission.INTERNE…

CVE-2022-41128

概述CVE-2022-41128 是 Microsoft Internet Explorer&#xff08;IE&#xff09;瀏覽器中 JavaScript 引擎&#xff08;JScript/Chakra&#xff09;的一個 0day 漏洞&#xff08;披露時無官方補丁&#xff09;&#xff0c;屬于內存破壞類漏洞&#xff0c;可被用于遠程代碼執行&…

基于LSTM的時間序列到時間序列的回歸模擬

獲取項目源碼點擊文末名片項目背景與目標 本項目旨在開發一種基于長短期記憶網絡&#xff08;LSTM&#xff09;的模型&#xff0c;用于時間序列到時間序列的回歸模擬任務。通過處理多組不同來源的時間序列數據&#xff0c;本模型的目標是從給定的輸入序列中預測相應的輸出序列。…

Linux基礎命令詳解:從入門到精通

本文整理了Linux系統中最常用的基礎命令&#xff0c;每個命令都配有詳細說明和具體示例&#xff0c;幫助你快速掌握Linux操作技巧。文章中用的終端是XShell,系統是Centos&#x1f4c1; 1. ls - 列出目錄&#xff08;文件夾&#xff09;內容 功能&#xff1a;顯示當前目錄下的文…

正點原子stm32F407學習筆記10——輸入捕獲實驗

一、輸入捕獲簡介 輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。我們以測量脈寬為例&#xff0c;用一個簡圖來 說明輸入捕獲的原理&#xff0c;如圖所示&#xff1a;假定定時器工作在向上計數模式&#xff0c;圖中 t1到t2 時間&#xff0c;就是我們需要測量的高電平時間。測…

深入理解設計模式:狀態模式(State Pattern)

在軟件開發中&#xff0c;我們經常會遇到對象的行為隨著其內部狀態的變化而變化的情況。例如&#xff0c;一個訂單可能處于"待支付"、"已支付"、"已發貨"或"已完成"等不同狀態&#xff0c;每個狀態下訂單的操作邏輯可能完全不同。如果…

企業級網絡綜合集成實踐:VLAN、Trunk、STP、路由協議(OSPF/RIP)、PPP、服務管理(TELNET/FTP)與安全(ACL)

NE綜合實驗4 一、實驗拓撲二、實驗需求 按照圖示配置IP地址。Sw7和sw8之間的直連鏈路配置鏈路聚合。公司內部業務網段為vlan10和vlan20&#xff0c;vlan10是市場部&#xff0c;vlan20是技術部&#xff0c;要求對vlan進行命名以便區分識別&#xff1b;pc10屬于vlan10&#xff0c…

小架構step系列20:請求和響應的擴展點

1 概述通過上一篇了解請求和響應的流程&#xff0c;Spring在設計上留了不少擴展點。里面通過查找接口的方式獲取的地方&#xff0c;都可以成為一種擴展點&#xff0c;因為只要實現這類接口就可以成為Spring加載的一部分。本文了解一下這些擴展點&#xff0c;方便后面進行擴展。…

模型材質一鍵替換~輕松還原多種三維場景

1. 概述模型的材質決定了三維場景的整體視效&#xff0c;山海鯨可視化不僅支持模型材質的替換與編輯&#xff0c;而且提供了大量現成的模型材質供大家使用&#xff0c;能夠幫助大家實現更高效的三維場景搭建。模型材質主要分為PBR材質和水面材質兩個部分。其中大部分靜態模型都…

【JS逆向基礎】數據庫之mysql

前言&#xff1a;mysql數據庫管理系統&#xff0c;由瑞典MySQL AB 公司開發&#xff0c;目前屬于 Oracle 旗下公司。MySQL 最流行的關MySQL是一個開源免費的關系型數據庫管系型數據庫管理系統&#xff0c;在 WEB 應用方面ySQL是最好的 RDBMS (Relational Database Management S…

金融工程、金融與經濟學知識點

本文整理了20個金融工程、金融和經濟學知識點及邏輯&#xff0c;這些是理解金融市場運作和進行量化分析的基石。 1. 金融工程 - 遠期與期權&#xff08;Forward & Option&#xff09;的定價與風險管理 遠期定價&#xff1a; 利用無套利原則&#xff0c;遠期合約的價格應等…

Vue 3 中導出 Excel 文件

在 Vue 3 中導出 Excel 文件&#xff0c;通常可以使用一些流行的 JavaScript 庫&#xff0c;如 SheetJS (xlsx) 或者 exceljs。這里我將分別介紹如何使用這兩個庫來在 Vue 3 應用中導出 Excel 文件。方法 1&#xff1a;使用 SheetJS (xlsx)安裝 SheetJS首先&#xff0c;你需要安…

奇麟大數據:前端大文件上傳解決方案

在奇麟大數據業務系統的開發及使用過程中&#xff0c;例如OBS對象存儲文件管理、流計算DSC依賴管理&#xff0c;經常會遇到上傳文件這樣的基礎需求&#xff0c;一般情況下&#xff0c;前端上傳文件就是new FormData&#xff0c;然后把文件 append 進去&#xff0c;然后post發送…