第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

ThinkPHP 控制器的使用

1. 前言

上一小節(jié)學(xué)習(xí)了如何定義 POST、GET、PUT、DELETE 四種路由請求方式,一般業(yè)務(wù)邏輯主要分為 控制器層模型層、服務(wù)層、視圖層。

本小節(jié)接著上節(jié)的內(nèi)容介紹如何使用控制器,控制器一般是定義在路由中的,控制中的方法一般在項目中主要用于接口接收請求參數(shù)和返回響應(yīng)數(shù)據(jù)的,然后比較復(fù)雜的業(yè)務(wù)邏輯一般都在 服務(wù)層模型層 處理。

2. 控制器的作用

按照 ThinkPHP 的架構(gòu)設(shè)計,所有的 URL 請求(無論是否采用了路由),最終都會定位到控制器(也許實際的類不一定是控制器類,但也屬于廣義范疇的控制器)。

控制器的層可能有很多,為了便于區(qū)分就把通過 URL 訪問的控制器稱之為訪問控制器(通常意義上我們所說的控制器就是指訪問控制器)。ThinkPHP 的控制器定義比較靈活,可以無需繼承任何的基礎(chǔ)類,也可以根據(jù)業(yè)務(wù)需求封裝自己的基礎(chǔ)控制器類。

3. 定義控制器類

控制器文件通常放在 controller 目錄下面,類名和文件名保持大小寫一致,并采用駝峰命名(首字母大寫),一般控制器的名稱定義帶有 Controller 后綴,為了演示方便,這里在 study.php 路由文件先定義一個 GET 路由,指向一個控制器:

Route::get('imooc', 'app\controller\Study\ImoocController@get');

如下圖所示:
圖片描述

Tips: 如上圖所示路由指向的控制器是 app\controller\Study 目錄下的 ImoocController 控制器中的 get 方法。

接下來在 app\controller\Study 目錄下新建一個文件名是 ImoocController.phpImoocController 類,可以使用 PhpStorm 軟件來創(chuàng)建,它可以自動補上類名和命名空間:

圖片描述

在新彈出的窗口中輸入 ImoocController 即可完成創(chuàng)建:

圖片描述

Tips: 如果沒有 PhpStorm 軟件則可以按照如圖所示的內(nèi)容編寫。

4. 控制器類繼承 BaseController 類

下載好的框架中,在 app 目錄中有一個 BaseController,把它稱為基礎(chǔ)控制器,每次自定義的控制器可以繼承它,在 ImoocController 控制器類中使用 extends 繼承 BaseController

<?php


namespace app\controller\Study;


use app\BaseController;

class ImoocController extends BaseController
{

}

如下圖所示:
圖片描述

Tips:ImoocController 類需要繼承 BaseController 基礎(chǔ)控制器,就需要使用 use app\BaseController 引用它。

5. BaseController 類介紹

首先打開 app 目錄下的 BaseController.php 文件,文件的內(nèi)容如下圖所示:
圖片描述

從打開的文件中可以看出,BaseController 類中包含有 請求實例($request)、應(yīng)用實例($app)、是否批量驗證($batchValidate)、控制器中間件($middleware),初始化 initialize()、validate()。

其中請求實例($request)主要包含了一起請求過來的參數(shù)信息,應(yīng)用實例($app) 包含了容器相關(guān)的信息,初始化 initialize()表示在控制器中若要使用構(gòu)造函數(shù)請使用 initialize(),而不是 __constrcut(),然后 validate() 方法主要用驗證請求過來的參數(shù)校驗。

6. 定義方法

之前路由中定義了 get() 方法,需要在 ImoocController 控制器中定義,為了演示方便,這里定義如下:

    public function get(){
        $name = $this->request->param("name");
        halt($name);
    }

如下圖所示:
圖片描述

Tips: 我們可以看到 $request 屬性中包含了請求參數(shù)的信息,halt()方法是 tp 框架中自帶一個打印方法,并且會結(jié)束程序繼續(xù)執(zhí)行。

然后我們可以用過 postman 軟件工具來請求一下剛才定義的 study/imoo 路由,如下圖所示:
圖片描述

7. 小結(jié)

本小節(jié)介紹了 BaseController 基礎(chǔ)控制器類中的一些屬性和方法的作用,后續(xù)小結(jié)會繼續(xù)使用,還介紹了如何定義一個控制器類,并且將定義好的路由指向控制器。

需要注意的是本小節(jié)介紹的一種靈活的路由定義方法,實際工作中常用于寫項目接口,最后還介紹了如何通過 postman 發(fā)起 GET 請求,然后通過控制器方法打印接收的參數(shù)。
Tips: 代碼倉庫
Excel導(dǎo)入學(xué)生信息
Excel導(dǎo)出學(xué)生信息
后臺處理數(shù)據(jù)