ThinkPHP5入門(基礎篇)

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');
相關文章
相關標籤/搜索