ThinkPHP
是一個快速、簡單的基於MVC
和麪向對象的輕量級PHP
開發框架,自2006年誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡代碼的同時,尤爲注重開發體驗和易用性,而且擁有衆多的原創功能和特性,爲WEB
應用和API
開發提供了強有力的支持。下面我就重點介紹ThinkPHP5新手須要配置的地方php
一、入口文件css
ThinkPHP5.0
版本的默認自帶的入口文件位於public/index.php
(實際部署的時候public
目錄爲你的應用對外訪問目錄)thinkphp
二、資源訪問bootstrap
網站的資源文件訪問不會影響正常的操做訪問,只有當訪問的資源文件不存在的時候纔會解析到入口文件,通常就會提示模塊不存在的錯誤。網站的資源文件通常放入public
目錄的子目錄下面,例以下面是一個建議規範:安全
public ├─index.php 應用入口文件 ├─static 靜態資源目錄 │ ├─css 樣式目錄 │ ├─js 腳本目錄 │ └─img 圖像目錄
記住,千萬不要在public
目錄以外的任何位置放置資源文件,包括application
目錄。服務器
訪問資源文件的URL路徑是:app
http://tp5.com/static/css/style.css http://tp5.com/static/js/common.js http://tp5.com/static/img/picture.jpg
固然,你也能夠更改資源文件的URL路徑,在config.php中配置以下:框架
// 視圖輸出字符串內容替換 'view_replace_str' => [ '__static__' => '/static' ],
訪問資源文件的改變後URL路徑是:iview
<link href="__static__/css/bootstrap.css" rel="stylesheet">
三、調試模式dom
ThinkPHP
支持調試模式,默認狀況下是開啓狀態(5.0.10+
版本開始,默認關閉調試模式,須要本身開啓)。調試模式以除錯方便優先,並且在異常的時候能夠顯示儘量多的信息,因此對性能有必定的影響。(調試模式不支持模塊單獨開啓,只能應用全局開啓)
開發完成後,咱們實際進行項目部署的時候,修改應用配置文件(application/config.php
)中的app_debug
配置參數:
// 關閉調試模式 'app_debug' => false,
爲了安全考慮,避免泄露你的服務器WEB目錄信息等資料,必定記得正式部署的時候關閉調試模式。
四、控制器
若是要訪問一個駝峯命名的控制器,例如咱們把上面的例子改爲一個HelloWorld
控制器。
<?php namespace app\index\controller; class HelloWorld { public function index($name = 'World') { return 'Hello,' . $name . '!'; } }
默認狀況下正確的方法是使用下面的URL進行訪問
http://tp5.com/index.php/index/hello_world
下面的訪問地址是錯誤的
http://tp5.com/index.php/index/HelloWorld
固然也能夠區分大小寫訪問,在config.php文件中,設置了關閉url自動轉換以下
'url_convert' => false,
五、URL訪問
ThinkPHP
採用單一入口模式訪問應用,對應用的全部請求都定向到應用的入口文件,系統會從URL
參數中解析當前請求的模塊、控制器和操做,下面是一個標準的URL
訪問格式:
http://domainName/index.php/模塊/控制器/操做
模塊在ThinkPHP中的概念其實就是應用目錄下面的子目錄,而官方的規範是目錄名小寫,所以模塊所有采用小寫命名,不管URL是否開啓大小寫轉換,模塊名都會強制小寫。
應用的index
模塊的Index
控制器定義以下:
<?php namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name = 'World') { return 'Hello,' . $name . '!'; } }
若是咱們直接訪問入口文件的話,因爲URL中沒有模塊、控制器和操做,所以系統會訪問默認模塊(index)下面的默認控制器(Index)的默認操做(index),所以下面的訪問是等效的:
http://tp5.com/index.php http://tp5.com/index.php/index/index/index
若是要訪問控制器的hello方法,則須要使用完整的URL地址
http://tp5.com/index.php/index/index/hello
六、隱藏入口
能夠去掉URL地址裏面的入口文件index.php
,可是須要額外配置WEB服務器的重寫規則。
以Apache
爲例,須要在public下的同級添加.htaccess
文件(官方默認自帶了該文件),內容以下:
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
若是用的phpstudy
,規則以下:
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>
接下來就能夠使用下面的URL地址訪問了
http://tp5.com/index/index/index http://tp5.com/index/index/hello
七、根命名空間(類庫包)
根命名空間是一個關鍵的概念,以上面的\think\cache\driver\File
類爲例,think
就是一個根命名空間,其對應的初始命名空間目錄就是系統的類庫目錄(thinkphp/library/think
),咱們能夠簡單的理解一個根命名空間對應了一個類庫包。
系統內置的幾個根命名空間(類庫包)以下:
若是須要增長新的根命名空間,有兩種方式:註冊新的根命名空間或者放入EXTEND_PATH
目錄(自動註冊)。
請注意本手冊中的示例代碼爲了簡潔,如無指定類庫的命名空間的話,都表示指的是think
命名空間,例以下面的代碼:
Route::get('hello','index/hello');
請自行添加 use think\Route
或者使用
\think\Route::get('hello','index/hello');