TP6學習筆記一:安裝與基本配置

1 說明與概述

1.1 說明

如下內容大部分來源於TP6徹底開發手冊,以手冊爲主附上我的理解,僅做學習使用.php

1.2 概述

第一篇學習筆記,主要記錄TP6的基礎,包括TP6簡介,安裝,Hello World,目錄結構,配置等.html

2 TP6

TP是一個免費的開源的,快速的,簡單的面向對象的輕量級的PHP開發框架,是爲了敏捷WEB應用開發和簡化企業應用開發而誕生的.TP遵循Apache2開源許可協議發佈,意味着能夠無償使用TP,甚至容許基於TP開發的應用開源或商業產品發佈/銷售.linux

3 TP6主要新特性

  • 採用PHP7強類型(嚴格模式)
  • 支持更多PSR規範
  • 多應用支持
  • ORM組件獨立
  • 改進的中間件機制
  • 更強大和易用的查詢
  • 全新的事件系統
  • 支持容器invoke回調
  • 模板引擎組件獨立
  • 內部功能中間優化
  • SESSION機制改進
  • 緩存及日誌支持多通道
  • 引入Filesystem組件
  • 對Swoole以及協程支持改進
  • 對IDE更加友好
  • 統一和精簡大量用法

4 安裝

4.1 安裝要求

在安裝TP6以前,須要先安裝:git

  • PHP ( >= 7.1.0)
  • Composer

4.2 Composer

4.2.1 Composer簡介

Composer是PHP5.3以上用來管理依賴關係的工具,能夠在本身的項目中聲明所依賴的外部工具庫,Composer會安裝這些依賴的庫文件.thinkphp

4.2.2 Composer安裝

Linux/Mac:數據庫

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

Windows:戳這裏.
筆者的是win環境,以win爲例:首先用上面的連接下載Composer-Setup.exe.
在這裏插入圖片描述
選擇php.exe的位置.
在這裏插入圖片描述
這裏筆者遇到的問題是firebird與oci這兩個模塊缺失的問題,解決方法戳這裏.
.
在這裏插入圖片描述
好了以後會修改php.ini的默認配置,原來的會備份,next修改便可.
在這裏插入圖片描述
下一步是代理設置,不須要的直接next.
在這裏插入圖片描述
在這裏插入圖片描述
而後說提示Failed to decode zlib stream.
在這裏插入圖片描述
(若是沒遇到這種問題直接使用exe安裝成功的能夠略過下面)
其實linux下這種問題是很容易解決的,編譯安裝zlib就是了,可是win下就有點麻煩了.因而搜了如下zlib在win下的安裝方法,須要使用VS,下面是Github上的zlib資源:
在這裏插入圖片描述
可能這真的是一個"wrong place"...
好吧不廢話了,筆者平時不須要用VS,爲了一個zlib去下一個VS這怎麼看也不划算.找了一下其餘的安裝方法,使用另外一個文檔安裝(戳這裏):
在這裏插入圖片描述
在這裏插入圖片描述
而後終於成功了:
在這裏插入圖片描述json

4.2.3 (可選)換鏡像

官方建議使用國內的阿里雲鏡像:數組

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

這是一種全局的修改配置文件的方式,還能夠修改當前項目的配置文件,進入項目的根目錄(composer.json所在的目錄),執行:瀏覽器

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

其實相比起全局就是少了一個-g.
上面的命令會在當前項目中的composer.json末尾添加鏡像配置信息(固然能夠直接手動添加):緩存

"repositories":
{
	"packagist":
	{
		"type":"composer",
		"url":"https://packagist.phpcomposer.com"
	}
}

4.2.4 安裝TP6穩定版

cd切換到項目目錄,

cd project
composer create-project topthink/think tp6

其中tp6就是應用根目錄,能夠隨意修改.
若是以前已經安裝過,能夠切換到項目目錄,使用如下命令更新:

composer update topthink/framework

(會刪除thinkphp目錄從新安裝新版本)

4.2.5 安裝TP6開發版

一樣切換到項目目錄:

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

這裏筆者用的是開發版,可是出現openssl錯誤:
在這裏插入圖片描述
在php.ini中把openssl擴展開啓就好了.
而後會多一個叫tp6的文件夾.
在這裏插入圖片描述

4.2.6 調試模式

默認是部署模式,開發階段能夠修改APP_DEBUG開啓調試模式.使用create-project安裝的tp6默認會帶一個.example.env的文件,默認已開啓調試模式:
在這裏插入圖片描述

4.2.7 測試

php think run

提示:
在這裏插入圖片描述
瀏覽器輸入:

http://localhost:8000

在這裏插入圖片描述
默認用的是8000端口,可使用-p指定端口,好比80端口:

php think run -p 80

而後使用

http://localhost

訪問.

5 規範

PHP PSR規範官網.
中文翻譯.
在這裏插入圖片描述
至於這個....

6 單應用模式與多應用模式

PHP支持多應用部署,實際目錄結構取決於單應用仍是多應用模式.
默認安裝後的目錄結構是單應用模式.多應用模式與單應用模式的主要不一樣就是app目錄,多應用模式下面有多個應用目錄,而單應用模式默認只有一個controller,並且官方建議多應用模式的話把controller刪除,系統會根據該目錄做爲判斷是不是單應用的依據.

7 目錄結構

相對於TP5.1,TP6的主要變化是核心框架歸入vendor,原來的application變爲app目錄.
這裏以單應用模式進行目錄結構的說明,項目目錄下(這個例子是上面安裝的tp6目錄)有8個子目錄:app,config,extend,public,route,runtime,vendor,view.

7.1 app

app是應用目錄,包含一個controller控制器目錄(默認有一個Index.php)與如下php文件:

  • AppService.php:應用服務類,包含服務註冊與服務啓動兩個方法.
  • BaseController.php:控制器基礎類,包含驗證初始化方法.
  • common.php:應用公共文件,默認爲空.
  • event.php:事件定義文件.
  • ExceptionHandle.php:應用異常處理類.包括記錄與渲染方法.
  • middleware.php:全局中間件定義文件,默認返回空.
  • provider.php:容器provider定義文件.
  • Request.php:應用請求對象類,繼承於think\Request.
  • service.php:系統服務定義文件,服務在完成全局初始化以後執行.

除此以外還有一個叫.htaccess的文件,這個也叫分佈式配置文件,全稱是Hypertext Access,提供了針對目錄改變配置的方法,即在一個特定的文檔目錄放置一個包含一個或多個指令的文件,以做用於此目錄及其全部子目錄.
.htacess是Apache服務器的一個配置文件,負責相關目錄下的網頁配置,經過.htaccess能夠實現網頁301重定向,自定義404錯誤頁面等功能.默認是

deny from all

無條件禁止訪問.

7.2 config

config是配置目錄,包含如下php文件:

  • app.php:應用配置文件,包含應用地址,應用命名空間,是否開啓路由,默認應用,默認時區,應用映射,域名綁定,禁止RUL訪問的應用列表,異常頁面的模板文件,錯誤顯示信息,顯示錯誤信息等配置.
  • cache.php:緩存設置,包括默認緩存驅動,驅動方式,緩存保存目錄,緩存前綴,緩存有效期,緩存標籤前綴,序列化機制等配置.
  • console.php:控制檯配置,默認包含指令定義的配置.
  • cookie.php:cookie配置,包括保存時間,保存路徑,有效域名,是否啓用安全傳輸,是否使用setcookie,httponly等配置.
  • database.php:數據庫配置,包含數據庫鏈接(包括類型,地址,庫名,用戶名,密碼,鏈接參數,默認編碼,表前綴,部署方式:0表明集中式,1表明分佈式,是否開啓讀寫分離,讀寫分離後的主服務器數量,指定的從服務器序號,是否嚴格檢查字段存在,是否斷線重連,監聽SQL,開啓字段緩存,字段緩存路徑),時間查詢規則,自動寫入時間戳字段,時間字段取出後的默認格式等配置.
  • filesystem.php:文件系統配置,包含默認磁盤,磁盤列表,磁盤類型,磁盤路徑,磁盤路徑對應的外部URL路徑,可見性等配置.
  • lang.php:多語言配置,包括默認語言,容許的語言列表,多語言自動偵測變量名,是否使用cookie,多語言cookie變量,擴展語言包,Accept-Language轉義爲對應的語言包名稱,是否支持語言分組等配置.
  • log.php:日誌配置,包括默認日誌記錄通道(包括日誌記錄方式,保存目錄,單文件日誌寫入,獨立日誌級別,最大日誌文件數量,使用JSON格式記錄,日誌處理器,是否關閉通道日誌寫入,日式出書格式化格式,是否實時寫入),日誌記錄級別,日誌類型記錄通道,是否關閉全局日誌寫入,全局日誌處理器等配置.
  • middleware.php:中間件配置.
  • route.php:路由配置,包括pathinfo分隔符,URL僞靜態後綴,URL普通方式參數,是否開啓 路由延遲解析,是否強制使用路由,合併路由規則,路由是否徹底匹配,訪問控制器層名稱,空控制器名,是否使用控制器後綴,是否開啓請求緩存,請求緩存有效期,全局請求緩存排除規則,默認控制器名,默認操做名,操做方法後綴,默認JSONP格式返回處理方法,默認JSONP處理方法等配置.
  • session.php:會話配置,包括會話名稱,會話ID,驅動方式,存儲鏈接標識,過時時間,前綴等配置.
  • trace.php:Trace配置,開啓調試模式後有效.
  • view.php:模板配置,包括模板引擎類型,默認模板渲染規則,模板目錄名,模板後綴,模板文件名分隔符,模板引擎普通標籤開始/結束標識,標籤庫標籤開始/結束標記等配置.

7.3 extend

擴展類庫目錄,默認只有一個.gitignore.

7.4 public

對外訪問目錄,默認包含:

  • static文件夾:靜態資源文件夾,默認帶一個.gitignore.
  • .htaccess:Apache配置文件,用於Apache的重寫.
  • favicon.ico:標籤圖標.
  • index.php:入口文件.
  • robots.txt:一個遵循Robots協議(也叫爬蟲協議,機器人協議等,全稱爲網絡爬蟲排除標準)的txt,是搜索引擎中訪問網站時要查看的第一個文件,告訴蜘蛛程序在服務器上什麼文件是能夠被查看的.默認的配置表示全部的搜索引擎能夠查看,禁止列表爲空.
  • router.php:快速測試文件.

7.5 route

路由定義目錄,默認包含一個app.php,路由定義文件.

7.6 runtime

應用的運行時目錄,默認只有.gitignore.

7.7 vendor

Composer類庫目錄,包含

  • bin:包含一個叫var-dump-server的腳本與一個叫var-dump-server.bat批處理文件,是Laravel5.7的新特性,引入Laravel Dump Server擴展包.
  • composer:包含一些自動加載的php文件(autoload_classmap.php,autoload_files.php,autoload_namespaces.php,autoload_psr4.php,autoload_real.php,autoload_static.php)與一個類加載器ClassLoader.php,還有一個installed.json,包含一些安裝信息.
  • league:Laravel基於Frank de Jonge開發的PHP包Flysystem,提供了強大的文件系統抽象層處理,Laravel集成Flysystem以便使用不一樣的驅動簡化對文件系統的操做.
  • opis:閉包處理相關.
  • psr:PHP規範處理,包括PSR緩存,PSR簡單緩存,PSR容器以及PSR日誌.
  • symfony:基於MVC架構的PHP框架Symfony.
  • topthink:TP框架,包括四個子文件夾:framework,think-helper,think-orm,think-trace.framework是TP6框架核心,think-helper是TP6經常使用的一些擴展類庫,think-orm是基於PHP7.1+和PDO實現的ORM,支持多數據庫,think-trace是TP6頁面Trace擴展,支持Html頁面和瀏覽器控制檯兩種方式輸出.
  • autoload.php:Composer生成的自動加載文件.
  • services.php:安裝TP自動生成的文件,默認返回一個長度爲1的數組.

7.8 view

視圖目錄,若是不適用視圖能夠刪除該目錄.

8 配置

8.1 單應用配置

單應用模式的根目錄下的config目錄就是全部配置文件,裏面的文件會被自動讀取,若是存在子目錄能夠經過Config的load方法手動加載,如:

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

8.2 多應用配置

多應用配置的話根目錄下的config就是全局配置文件,而每一個應用的配置文件在對應的應用目錄下的config中,相同的參數會覆蓋全局配置.

|--app
|  |--app1
|  |  |--config(應用配置)
|  |  |  |--xxxconfig.php
|  |  |  |...
|  |--app2
|  |  |--config(應用配置)
|  |  |  |--xxxconfig.php
|  |  |  |...
|--config(全局配置)
|  |--xxxconfig.php

8.3 環境變量

官方建議,除了一級配置外,配置參數的名字建議使用小寫,如下配置只能在環境變量中修改:

app_debug 描述
app_debug 應用調試模式
config_ext 配置文件後綴

開發過程當中的.env文件(默認爲.example.env)能夠模擬環境變量配置,採用ini格式.
若是部署環境中單獨使用配置了環境變量(前綴PHP_),須要刪除.env配置文件避免衝突.
獲取環境變量須要先引入think\facde\Env,而後使用:

Env::get('xxx');

獲取.環境變量獲取不區分大小寫,支持默認值.

8.4 Config類

使用Config類須要先引入:

use think\facade\Config

用如下方法讀取一級配置:

Config::get('app');

讀取單個配置參數:

Config::get('app.app_name');

判斷是否存在某個設置參數:

Config::has('template');

設置參數:

Config::set(['name1'=>'value1','name2'=>'value2'],'config');

8.5 使用Yaconf進行配置處理

8.5.1 Yaconf介紹

Yaconf是一個高性能的配置管理擴展,在PHP啓動時處理全部要處理的配置,全部配置的內容都是immutable的,支持豐富的配置類型,包括字符串,數組,分節,分節繼承,而且能夠在配置中直接寫PHP常量與環境變量等.

8.5.2 使用

TP中使用的Yaconf不支持動態設置,使用前須要先安裝think-yaconf擴展,安裝以後再也不區分全局與應用配置.
安裝think-yaconf擴展:

composer require topthink/think-yaconf

在app下的provider.php添加:

'think\Config' => '\think\Yaconf'

而後使用setYaconf指定Yaconf使用的獨立配置文件,如:

think\facade\Config::setYaconf('thinkphp');

設置後只須要在thinkphp.ini一個文件進行項目的配置.
更多Yaconf用法戳這裏.

若是以爲文章好看,歡迎點贊.
同時歡迎關注微信公衆號:氷泠之路.
在這裏插入圖片描述

相關文章
相關標籤/搜索