ThinkPHP5入門(基礎篇)


ThinkPHP是一個快速、簡單的基於MVC和面向對象的輕量級PHP開發框架,自2006年誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡代碼的同時,尤其注重開發體驗和易用性,並且擁有眾多的原創功能和特性,為WEB應用和API開發提供了強有力的支持。下面我就重點介紹ThinkPHP5新手需要配置的地方

1、入口文件

ThinkPHP5.0版本的默認自帶的入口文件位於public/index.php(實際部署的時候public目錄為你的應用對外訪問目錄)

 

2、資源訪問

網站的資源文件訪問不會影響正常的操作訪問,只有當訪問的資源文件不存在的時候才會解析到入口文件,一般就會提示模塊不存在的錯誤。網站的資源文件一般放入public目錄的子目錄下面,例如下面是一個建議規范:

public
├─index.php       應用入口文件
├─static                靜態資源目錄   
│  ├─css      樣式目錄
│  ├─js         腳本目錄
│  └─img      圖像目錄

記住,千萬不要在public目錄之外的任何位置放置資源文件,包括application目錄。

訪問資源文件的URL路徑是:

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路徑是:

<link href="__static__/css/bootstrap.css" rel="stylesheet">

 

3、調試模式

ThinkPHP支持調試模式,默認情況下是開啟狀態(5.0.10+版本開始,默認關閉調試模式,需要自己開啟)。調試模式以除錯方便優先,而且在異常的時候可以顯示盡可能多的信息,所以對性能有一定的影響。調試模式不支持模塊單獨開啟,只能應用全局開啟)

開發完成后,我們實際進行項目部署的時候,修改應用配置文件(application/config.php)中的app_debug配置參數:

// 關閉調試模式
'app_debug' =>  false,

為了安全考慮,避免泄露你的服務器WEB目錄信息等資料,一定記得正式部署的時候關閉調試模式。

 

4、控制器

如果要訪問一個駝峰命名的控制器,例如我們把上面的例子改成一個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,

 

5、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

 

6、隱藏入口

可以去掉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

 

7、根命名空間(類庫包)

根命名空間是一個關鍵的概念,以上面的\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');

 

8、common公共文件

其中common模塊是一個特殊的模塊,默認是禁止直接訪問的,一般用於放置一些公共的類庫用於其他模塊的繼承,例如:

// 應用公共文件
//增加一個新函數
function my_fun(){
    return '應用公共文件';
}

調用直接{:my_fun()}可以了


免責聲明!

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



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