[ThinkPHP6.*安裝 (草稿先發布,再維護)


ThinkPHP6.0的安裝,官方文檔中有詳細的說明,不過在安裝之前,大家還是要做一些准備的,就是PHP本地開發環境 的搭建。

官方手冊地址:https://www.kancloud.cn/manual/thinkphp6_0/1037609

 

本地PHP環境的搭建

PHP本地開發環境的搭建

composer的安裝和使用

學習PHP大家一定要對composer有所了解,至少使使用簡單的命令。在使用時,注意更換源(國內鏡像)。

 

ThinkPHP6.0的安裝

如果你是第一次安裝的話,在命令行下面,切換到你的WEB根目錄下面並執行下面的命令:

composer create-project topthink/think tp


這里的tp目錄名你可以任意更改,這個目錄就是我們后面會經常提到的應用根目錄。

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

composer update topthink/framework


更新操作會刪除thinkphp目錄重新下載安裝新版本,但不會影響app目錄,因此不要在核心框架目錄添加任何應用代碼和類庫。

一般情況下,composer安裝的是最新的穩定版本,不一定是最新版本,如果你需要安裝實時更新的版本(適合學習過程),可以安裝6.0.x-dev版本。

composer create-project topthink/think=6.0.x-dev tp


如果你沒有安裝集成開發環境,那么ThinkPHP6.0,可能通下面命令運行起來

進入命令行下面,執行下面指令

php think run

在瀏覽器中輸入地址:

http://localhost:8000/


ThinkPHP6的入門介紹 

開發規范

ThinkPHP6.0遵循PSR-2命名規范和PSR-4自動加載規范,並且注意如下規范:

目錄和文件

  • 目錄使用小寫+下划線;
  • 類庫、函數文件統一以.php為后綴;
  • 類的文件名均以命名空間定義,並且命名空間的路徑和類庫文件所在路徑一致;
  • 類文件采用駝峰法命名(首字母大寫),其它文件采用小寫+下划線命名;
  • 類名和類文件名保持一致,統一采用駝峰法命名(首字母大寫);

函數和類、屬性命名

  • 類的命名采用駝峰法(首字母大寫),例如UserUserType,默認不需要添加后綴,例如UserController應該直接命名為User
  • 函數的命名使用小寫字母和下划線(小寫字母開頭)的方式,例如get_client_ip
  • 方法的命名使用駝峰法(首字母小寫),例如getUserName
  • 屬性的命名使用駝峰法(首字母小寫),例如tableNameinstance
  • 特例:以雙下划線__打頭的函數或方法作為魔術方法,例如__call__autoload

常量和配置

  • 常量以大寫字母和下划線命名,例如APP_PATH
  • 配置參數以小寫字母和下划線命名,例如url_route_onurl_convert
  • 環境變量定義使用大寫字母和下划線命名,例如APP_DEBUG

數據表和字段

  • 數據表和字段采用小寫加下划線方式命名,並注意字段名不要以下划線開頭,例如think_user表和user_name字段,不建議使用駝峰和中文作為數據表及字段命名。

請理解並盡量遵循以上命名規范,可以減少在開發過程中出現不必要的錯誤。

框架的目錄結構

相對於5.1來說,6.0版本目錄結構的主要變化是核心框架納入vendor目錄,然后原來的application目錄變成app目錄。

6.0支持原生多應用模式部署,所以實際的目錄結構取決於你采用的是單應用還是多應用模式,分別說明如下。

單應用模式

默認安裝后的目錄結構就是一個單應用模式

www  WEB部署目錄(或者子目錄)
├─app           應用目錄
│  ├─controller      控制器目錄
│  ├─model           模型目錄
│  ├─view            視圖目錄
│  ├─ ... 更多類庫目錄 │ │ │ ├─command.php 命令行定義文件 │ ├─common.php 公共函數文件 │ └─event.php 事件定義文件 │ ├─config 配置目錄 │ ├─app.php 應用配置 │ ├─cache.php 緩存配置 │ ├─cookie.php Cookie配置 │ ├─database.php 數據庫配置 │ ├─log.php 日志配置 │ ├─route.php 路由和URL配置 │ ├─session.php Session配置 │ ├─template.php 模板引擎配置 │ └─trace.php Trace配置 │ ├─route 路由定義目錄 │ ├─route.php 路由定義文件 │ └─ ... │ ├─public WEB目錄(對外訪問目錄) │ ├─index.php 入口文件 │ ├─router.php 快速測試文件 │ └─.htaccess 用於apache的重寫 │ ├─extend 擴展類庫目錄 ├─runtime 應用的運行時目錄(可寫,可定制) ├─vendor 第三方類庫目錄(Composer依賴庫) ├─build.php 自動生成定義文件(參考) ├─composer.json composer 定義文件 ├─LICENSE.txt 授權說明文件 ├─README.md README 文件 ├─think 命令行入口文件 

多應用模式

如果你需要一個多應用的項目架構,目錄結構可以參考下面的結構進行調整(關於配置文件的詳細結構參考后面章節)。

www  WEB部署目錄(或者子目錄)
├─app           應用目錄
│  ├─app_name           應用目錄
│  │  ├─common.php 函數文件 │ │ ├─controller 控制器目錄 │ │ ├─model 模型目錄 │ │ ├─view 視圖目錄 │ │ └─ ... 更多類庫目錄 │ │ │ ├─command.php 命令行定義文件 │ ├─common.php 公共函數文件 │ └─event.php 事件定義文件 │ ├─config 應用配置目錄 │ ├─app_name 應用配置目錄 │ │ ├─database.php 數據庫配置 │ │ ├─cache 緩存配置 │ │ └─ ... │ │ │ ├─app.php 應用配置 │ ├─cache.php 緩存配置 │ ├─cookie.php Cookie配置 │ ├─database.php 數據庫配置 │ ├─log.php 日志配置 │ ├─route.php 路由和URL配置 │ ├─session.php Session配置 │ ├─template.php 模板引擎配置 │ └─trace.php Trace配置 │ ├─route 路由定義目錄 │ ├─app_name 應用路由目錄 │ │ ├─route.php 路由定義文件 │ │ └─ ... │ ├─public WEB目錄(對外訪問目錄) │ ├─index.php 入口文件 │ ├─router.php 快速測試文件 │ └─.htaccess 用於apache的重寫 │ ├─extend 擴展類庫目錄 ├─runtime 應用的運行時目錄(可寫,可定制) ├─vendor 第三方類庫目錄(Composer依賴庫) ├─build.php 自動生成定義文件(參考) ├─composer.json composer 定義文件 ├─LICENSE.txt 授權說明文件 ├─README.md README 文件 ├─think 命令行入口文件 

多應用模式部署后,記得刪除app目錄下的controller目錄。

在實際的部署中,請確保只有public目錄可以對外訪問。

mac或者linux環境下面,注意需要設置runtime目錄權限為777。

 

ThinkPHP6.0中的配置

配置目錄結構與項目的結構有關,項目分為單應用和多應用。單應用下相對比較簡單。

在多應用配置下,配置分為全局配置和應用配置,應用配置的優先級要高於全局配置。

配置項的讀取和配置和之前的版本相差不是太多。

入口文件隱藏

沒有特殊的需求,入口文件,一般情況下不需要做任何的修改。

在這里要注意,ThinkPHP6.0的url訪問和之前版本的Url訪問是有區別的。

單應用:

http://serverName/index.php(或者其它入口文件)/控制器/操作/參數/值… 

多應用:

http://serverName/index.php?s=/控制器/操作/[參數名/參數值...] 

在這里要注意,在多應用模式下,url訪問時訪問不到,是因為默認情況下,配置文件中開啟了強制路由。另外要開啟多應用模式。這樣的話,才能夠正常的訪問。

在進行入口文件隱藏時,需要進行URL重寫,不同的服務器環境,設置方式也不同。TP官方文檔中有詳情的說明。

命令行工具

命令行操作比較靈活方便,所以有必要去學習一下命令行。

在使用命令行工具時,需要注意以下事項

  1. PHP要設置為環境變量,並且版本要在7.1+
  2. 在命令行中,執行命令時要定位到項目根目錄
  3. 如果要使用命令創建應用,首先需要將build.example.php重命名為build.php並移入app目錄
  4. 命令行工具的選用(推薦使用git bash)

基本命令

  1. php think list這個是比較重要的,可以查看目錄所支持的所有命令
php think list
  1. php think build 應用名稱 創建應用
php think build admin
  1. php think make:controller admin@Index 創建控制器
`php think make:controller admin@Index 

.....

更多的命令,可以去看一下文檔,或者 執行:php think list

 

Facade(門面)

facade也要外觀模式,是一種設置模式。可以簡單的理解為,可以將一個動態類庫變為一個靜態類庫(向外提供一個靜態的訪問入口)。

下面是一個示例,假如我們定義了一個app\common\Test類,里面有一個hello動態方法。

<?php namespace app\common; class Test { public function hello($name) { return 'hello,' . $name; } } 

調用hello方法的代碼應該類似於:

$test = new \app\common\Test; echo $test->hello('thinkphp'); // 輸出 hello,thinkphp

數據遷移

使用數據庫遷移工具可以將數據庫結構和數據很容易的在不同的數據庫之間管理遷移。

在以前,為了實現“程序安裝”,你可能會導出一份sql文件,安裝時,用程序解析這個sql文件,執行里面的語句,這樣做有諸多的局限性,但現在使用數據庫遷移工具,你可使用一個強大的類庫API來創建數據庫結構和記錄,並且可以容易的安裝到Mysql,sqlite,sqlserver等數據庫。

使用之前你應當正確的連接到數據庫,不論是mysql,sqlite,sqlserver

安裝
composer require topthink/think-migration 
創建遷移工具文件
//執行命令,創建一個操作文件,一定要用大駝峰寫法,如下 php think migrate:create AnyClassNameYouWant //執行完成后,會在項目根目錄多一個database目錄,這里面存放類庫操作文件 //文件名類似/database/migrations/20190615151716_any_class_name_you_want.php 
編輯文件
<?php use think\migration\Migrator; use think\migration\db\Column; class AnyClassNameYouWant extends Migrator { /** * Change Method. * * Write your reversible migrations using this method. * * More information on writing migrations is available here: * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class * * The following commands can be used in this method and Phinx will * automatically reverse them when rolling back: * * createTable * renameTable * addColumn * renameColumn * addIndex * addForeignKey * * Remember to call "create()" or "update()" and NOT "save()" when working * with the Table class. */ public function change() { // create the table $table = $this->table('users',array('engine'=>'MyISAM')); $table->addColumn('username', 'string',array('limit' => 15,'default'=>'','comment'=>'用戶名,登陸使用')) ->addColumn('password', 'string',array('limit' => 32,'default'=>md5('123456'),'comment'=>'用戶密碼')) ->addColumn('login_status', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'登陸狀態')) ->addColumn('login_code', 'string',array('limit' => 32,'default'=>0,'comment'=>'排他性登陸標識')) ->addColumn('last_login_ip', 'integer',array('limit' => 11,'default'=>0,'comment'=>'最后登錄IP')) ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登錄時間')) ->addColumn('is_delete', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'刪除狀態,1已刪除')) ->addIndex(array('username'), array('unique' => true)) ->create(); } } 
執行遷移工具
php think migrate:run //此時數據庫便創建了prefix_users表. 
復制

數據庫會有一個migrations表,這個是工具使用的表,不要修改

 

數據填充

數據填充就是向數據庫中寫入數據(測試數據)。

生成填充文件

ThinkPHP官方並沒有相關的介紹,大家可以通過php think list來查看相關的命令

生成填充文件

php think seed:create SeederUser 

編寫填充代碼

這里要注意,所謂數據填充,就是在填充文件中的run方法里面,進行數據插入操作,可以使用模型方式也可以使用數據庫操作方式!

執行數據填充

php  think seed:run

后端應用的創建

創建后台應用,只需要執行如下命令即可。

php think build admin





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM