如下內容大部分來源於TP6徹底開發手冊,以手冊爲主附上我的理解,僅做學習使用.php
第一篇學習筆記,主要記錄TP6的基礎,包括TP6簡介,安裝,Hello World,目錄結構,配置等.html
TP是一個免費的開源的,快速的,簡單的面向對象的輕量級的PHP開發框架,是爲了敏捷WEB應用開發和簡化企業應用開發而誕生的.TP遵循Apache2開源許可協議發佈,意味着能夠無償使用TP,甚至容許基於TP開發的應用開源或商業產品發佈/銷售.linux
在安裝TP6以前,須要先安裝:git
Composer是PHP5.3以上用來管理依賴關係的工具,能夠在本身的項目中聲明所依賴的外部工具庫,Composer會安裝這些依賴的庫文件.thinkphp
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
官方建議使用國內的阿里雲鏡像:數組
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" } }
cd切換到項目目錄,
cd project composer create-project topthink/think tp6
其中tp6就是應用根目錄,能夠隨意修改.
若是以前已經安裝過,能夠切換到項目目錄,使用如下命令更新:
composer update topthink/framework
(會刪除thinkphp目錄從新安裝新版本)
一樣切換到項目目錄:
cd project composer create-project topthink/think=6.0.x-dev tp6
這裏筆者用的是開發版,可是出現openssl錯誤:
在php.ini中把openssl擴展開啓就好了.
而後會多一個叫tp6的文件夾.
默認是部署模式,開發階段能夠修改APP_DEBUG開啓調試模式.使用create-project安裝的tp6默認會帶一個.example.env的文件,默認已開啓調試模式:
php think run
提示:
瀏覽器輸入:
http://localhost:8000
默認用的是8000端口,可使用-p指定端口,好比80端口:
php think run -p 80
而後使用
http://localhost
訪問.
PHP支持多應用部署,實際目錄結構取決於單應用仍是多應用模式.
默認安裝後的目錄結構是單應用模式.多應用模式與單應用模式的主要不一樣就是app目錄,多應用模式下面有多個應用目錄,而單應用模式默認只有一個controller,並且官方建議多應用模式的話把controller刪除,系統會根據該目錄做爲判斷是不是單應用的依據.
相對於TP5.1,TP6的主要變化是核心框架歸入vendor,原來的application變爲app目錄.
這裏以單應用模式進行目錄結構的說明,項目目錄下(這個例子是上面安裝的tp6目錄)有8個子目錄:app,config,extend,public,route,runtime,vendor,view.
app是應用目錄,包含一個controller控制器目錄(默認有一個Index.php)與如下php文件:
除此以外還有一個叫.htaccess的文件,這個也叫分佈式配置文件,全稱是Hypertext Access,提供了針對目錄改變配置的方法,即在一個特定的文檔目錄放置一個包含一個或多個指令的文件,以做用於此目錄及其全部子目錄.
.htacess是Apache服務器的一個配置文件,負責相關目錄下的網頁配置,經過.htaccess能夠實現網頁301重定向,自定義404錯誤頁面等功能.默認是
deny from all
無條件禁止訪問.
config是配置目錄,包含如下php文件:
擴展類庫目錄,默認只有一個.gitignore.
對外訪問目錄,默認包含:
路由定義目錄,默認包含一個app.php,路由定義文件.
應用的運行時目錄,默認只有.gitignore.
Composer類庫目錄,包含
視圖目錄,若是不適用視圖能夠刪除該目錄.
單應用模式的根目錄下的config目錄就是全部配置文件,裏面的文件會被自動讀取,若是存在子目錄能夠經過Config的load方法手動加載,如:
//加載config/extra/config.php,讀取到extra. \think\facade\Config::load('extra/config','extra');
多應用配置的話根目錄下的config就是全局配置文件,而每一個應用的配置文件在對應的應用目錄下的config中,相同的參數會覆蓋全局配置.
|--app | |--app1 | | |--config(應用配置) | | | |--xxxconfig.php | | | |... | |--app2 | | |--config(應用配置) | | | |--xxxconfig.php | | | |... |--config(全局配置) | |--xxxconfig.php
官方建議,除了一級配置外,配置參數的名字建議使用小寫,如下配置只能在環境變量中修改:
app_debug | 描述 |
---|---|
app_debug | 應用調試模式 |
config_ext | 配置文件後綴 |
開發過程當中的.env文件(默認爲.example.env)能夠模擬環境變量配置,採用ini格式.
若是部署環境中單獨使用配置了環境變量(前綴PHP_),須要刪除.env配置文件避免衝突.
獲取環境變量須要先引入think\facde\Env,而後使用:
Env::get('xxx');
獲取.環境變量獲取不區分大小寫,支持默認值.
使用Config類須要先引入:
use think\facade\Config
用如下方法讀取一級配置:
Config::get('app');
讀取單個配置參數:
Config::get('app.app_name');
判斷是否存在某個設置參數:
Config::has('template');
設置參數:
Config::set(['name1'=>'value1','name2'=>'value2'],'config');
Yaconf是一個高性能的配置管理擴展,在PHP啓動時處理全部要處理的配置,全部配置的內容都是immutable的,支持豐富的配置類型,包括字符串,數組,分節,分節繼承,而且能夠在配置中直接寫PHP常量與環境變量等.
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用法戳這裏.
若是以爲文章好看,歡迎點贊.
同時歡迎關注微信公衆號:氷泠之路.