成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

TP5學(xué)習(xí)記錄(Controller篇)

leone / 1563人閱讀

摘要:可以在入口文件中定義,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。動(dòng)態(tài)配置返回?cái)?shù)據(jù)類(lèi)型功能同上張三男請(qǐng)求成功

ThinkPHP5

ThinkPHP是一個(gè)免費(fèi)開(kāi)源的、快速簡(jiǎn)單的、面向?qū)ο蟮?、輕量級(jí)PHP開(kāi)發(fā)框架。

為什么選擇ThinkPHP5?

ThinkPHP5采用了全新的架構(gòu)思想;

優(yōu)化了核心是一個(gè)顛覆性的版本;

支持composer方式安裝;

對(duì)API進(jìn)行了大量的優(yōu)化更符合了現(xiàn)代web開(kāi)發(fā)的方式;

MVC定義:
MVC全名Model-View-Controller,是模型、視圖、控制器的縮寫(xiě),是一種軟件設(shè)計(jì)典范,而不是一種設(shè)計(jì)模式。其特點(diǎn):

耦合性低

重用行高

可維護(hù)性高

有利于軟件的工程化

開(kāi)發(fā)環(huán)境:
PHP >= 5.4.0
Mysql
Apache/Nginx

Mysql默認(rèn)端口號(hào)3306Apache/Nginx默認(rèn)端口號(hào)80

三種安裝方法:

github上下載think, framework

composer下載

thinkphp官網(wǎng)下載

composer簡(jiǎn)介
composerphp的一個(gè)依賴(lài)管理工具
文檔:http://docs.phpcomposer.com/
安裝:

curl -sS https://getcomposer.org/installer | php        #下載composer安裝工具
sudo mv composer.phar /usr/local/bin/composer            #將下載下來(lái)的composer.phar移動(dòng)到系統(tǒng)的PATH目錄,這樣全局能夠進(jìn)行訪問(wèn)。

composer安裝TP5
composer create-project --prefer-dist topthink/think proj_name

Apache設(shè)置根目錄

/Applications/XAMPP/etc/httpd.conf文件為Apache的核心配置文件,打開(kāi)后重新設(shè)置DocumentRoot的值,DocumentRootweb的根目錄,然后重啟Apache服務(wù)器即可。

TP5目錄講解

tp5
|-application                    #應(yīng)用目錄
    |-index
        |-controller    #控制器
        |-view            #視圖
        |-model            #模型
    |-command.php        #控制臺(tái)的配置文件
    |-common.php        #項(xiàng)目全局的公共文件
    |-config.php        #應(yīng)用的配置文件
    |-database.php        #數(shù)據(jù)庫(kù)配置文件
    |-route.php            #路由文件
    |-tag.php            #應(yīng)用行為擴(kuò)展文件
|-extend                        #擴(kuò)展類(lèi)庫(kù)目錄
|-public                        #網(wǎng)站對(duì)外訪問(wèn)目錄
    |-index.php            #應(yīng)用入口文件,所有的請(qǐng)求都是通過(guò)index.php之后進(jìn)行轉(zhuǎn)發(fā)
    |-robots.text        #定義哪些文件能被搜索引擎爬取,哪些不能
    |-router.php        #框架快速啟動(dòng)的配置文件
    |-static            #存放網(wǎng)站的靜態(tài)資源,如css,html,image等
|-runtime                        #運(yùn)行時(shí)目錄,包含項(xiàng)目運(yùn)行時(shí)的緩存文件、編譯文件、日志等
|-thinkphp                        #框架核心目錄
    |-lang                #語(yǔ)言包目錄
    |-library            #框架核心類(lèi)庫(kù)目錄
    |-tpl                #系統(tǒng)模版文件
    |-base.php            #框架基礎(chǔ)文件,常用于定義一些常量
    |-composer.json        #composer定義文件
    |-console.php        #控制臺(tái)入口文件
    |-convention.php    #慣例配置文件
    |-helper.php        #助手函數(shù)文件
    |-phpunit.xml        #單元測(cè)試配置文件
    |-README.md            #README文件
    |-start.php            #框架引導(dǎo)文件
|-vendor                        #第三方類(lèi)庫(kù)目錄
|-bulid.php                        #自動(dòng)生成定義文件
|-composer.json                    #composer定義文件
|-LICENSE.text                    #授權(quán)說(shuō)明文件
|-README.md                        #README文件
|-think                            #命令行工具入口

開(kāi)發(fā)規(guī)范:

目錄名使用小寫(xiě)+下劃線的方式命名

類(lèi)文件名采用大駝峰法,類(lèi)文件中的類(lèi)和類(lèi)文件名一致,其他文件名均使用小寫(xiě)

方法名采用小駝峰法

屬性名采用小駝峰法

以雙下劃線__開(kāi)頭的方法屬于魔術(shù)方法

常量以大寫(xiě)字母和下劃線命名

配置參數(shù)以小寫(xiě)字母和下劃線命名

數(shù)據(jù)庫(kù)表和字段采用小寫(xiě)+下劃線的命名方式 不能以下劃線開(kāi)頭

應(yīng)用類(lèi)庫(kù)的命名空間統(tǒng)一為app(可以配置)

ThinkPHP5模塊設(shè)計(jì)
5.0版本對(duì)模塊的功能做了靈活設(shè)計(jì),默認(rèn)采用多模塊的架構(gòu),并且支持單一模塊設(shè)計(jì),所有模塊的命名空間均以app作為根命名空間(可配置更改,一般不進(jìn)行更改)。
注意:application目錄下創(chuàng)建的common文件夾,common會(huì)默認(rèn)作為公共模塊,里面的文件,不能通過(guò)url直接訪問(wèn)

設(shè)置命名空間:namespace appindexcontroller;
設(shè)置別名:use appcommoncontrollerIndex as commonIndex;

ThinkPHP5配置

慣例配置
ThinkPHP框架下的默認(rèn)配置,在think/convention.php文件中,一般不進(jìn)行修改。

應(yīng)用配置
應(yīng)用配置文件是應(yīng)用初始化的時(shí)候首先加載的公共配置文件,默認(rèn)位于application/config.php,作用域?yàn)檎麄€(gè)應(yīng)用項(xiàng)目。可以在入口文件public/index.php中定義CONF_PATH,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。
config目錄下創(chuàng)建config.php,添加應(yīng)用配置或者對(duì)慣例配置進(jìn)行修改(需要更改慣例配置時(shí),一般不在原文件中直接更改,可以在創(chuàng)建的config.php中進(jìn)行更改)
config目錄下創(chuàng)建database.php,在里面配置數(shù)據(jù)庫(kù)連接

//定義配置文件目錄
define("CONF_PATH", __DIR__ . "/../application/config/");

擴(kuò)展配置
在上面應(yīng)用配置config目錄下添加名為extra的文件夾,然后添加配置文件,將會(huì)以數(shù)組形式作為元素添加到應(yīng)用配置下。

場(chǎng)景配置
在不同場(chǎng)景下設(shè)置不同的配置,可以利用設(shè)置數(shù)據(jù)庫(kù)的連接參數(shù)
home.php:家庭辦公環(huán)境的配置項(xiàng)
office.php:公司辦公環(huán)境的配置項(xiàng)

模塊配置
模塊配置文件是針對(duì)某個(gè)模塊下的配置文件,一般位于application/模塊名/config.php,可以在和application同級(jí)目錄下創(chuàng)建文件路徑config/index/config.php,然后在public/index.php中定義CONF_PATH為該路徑,這種情況也分為應(yīng)用配置config/config.php和模塊配置config/index/config.php,但會(huì)忽略application路徑下的配置。

動(dòng)態(tài)配置
在具體的控制器或者方法里面進(jìn)行動(dòng)態(tài)配置,動(dòng)態(tài)配置只在當(dāng)前的控制器或者當(dāng)前的方法中有效。比如在Index.php下設(shè)置如下代碼,就可以為Index控制器動(dòng)態(tài)的添加或修改配置。

public function __construct()
{
    config("before", "beforeAction");
    Config::set("before", "beforeAction");  //功能同上,動(dòng)態(tài)配置
}

Config類(lèi)下的方法
目錄:thinkphp/library/think/Config.php
range($range):設(shè)定配置參數(shù)的作用域
parse($config, $type = "", $name = "", $range = ""):解析配置文件或內(nèi)容
load($file, $name = "", $range = ""):加載配置文件(PHP格式)
has($name, $range = ""):檢測(cè)配置是否存在
get($name = null, $range = ""):獲取配置參數(shù) 為空則獲取所有配置
set($name, $value = null, $range = ""):設(shè)置配置參數(shù) name 為數(shù)組則為批量設(shè)置
reset($range = ""):重置配置參數(shù)

環(huán)境變量配置和使用

入口文件
單入口文件:應(yīng)用程序的所有http請(qǐng)求都由某一個(gè)文件接受并由這個(gè)文件轉(zhuǎn)發(fā)到功能代碼中。ThinkPHP符合這種功能規(guī)范,所有的http請(qǐng)求都由public/index.php文件接收并轉(zhuǎn)發(fā),根據(jù)不同的參數(shù),轉(zhuǎn)發(fā)到不同的控制器調(diào)用不同的方法,最終實(shí)現(xiàn)不同的功能。

隱藏入口文件

public/.htaccess里面:

# 將請(qǐng)求轉(zhuǎn)發(fā)到index.php之后
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

入口文件綁定

public/index.php中添加:

define("BIND_MODULE", "admin");           #綁定模塊為admin,只能訪問(wèn)admin模塊下的所有文件
define("BIND_MODULE", "admin/Index");  #綁定的模塊為admin下的Index控制器,只能訪問(wèn)Index控制器下的所有方法

可以在public目錄下添加文件api.php,然后在文件下定義應(yīng)用目錄、加載框架引導(dǎo)文件等..,然后進(jìn)行模塊綁定,這樣可以實(shí)現(xiàn)通過(guò)訪問(wèn)api.php下的模塊實(shí)現(xiàn)讓用戶只能訪問(wèn)具體模塊api下的文件,這樣一個(gè)項(xiàng)目中可以進(jìn)行多種開(kāi)發(fā)(API開(kāi)發(fā)等)。

應(yīng)用配置中:
auto_bind_module:自動(dòng)綁定模塊
其值設(shè)置為true之后
入口文件api.php會(huì)自動(dòng)綁定為api模塊
但入口文件index.php不會(huì)自動(dòng)綁定為index模塊

路由
將請(qǐng)求地址url和具體控制器中的具體方法綁定,通過(guò)路由來(lái)轉(zhuǎn)發(fā)使其對(duì)應(yīng)。

conf/config.php中添加(也可以不添加,系統(tǒng)默認(rèn)開(kāi)啟路由):

"url_route_on"           => true

index/Index控制器下有方法:

public function info($id = "")
{
    return "{$id}";
}

然后在config/route.php中添加:

return [
    //設(shè)置路由
    "info/:id" => "index/Index/info"
];

這樣就實(shí)現(xiàn)了通過(guò)訪問(wèn)localhost/info/5可以訪問(wèn)localhost/index/Index/info/5。

請(qǐng)求對(duì)象Request
ThinkPHP是一個(gè)單入口框架,所有的請(qǐng)求都通過(guò)index.php,可以通過(guò)index.php來(lái)接收所有的http請(qǐng)求,請(qǐng)求中的所有參數(shù)都可以通過(guò)Request對(duì)象來(lái)接收。

獲取Request對(duì)象的三種方式:

public function index()
{
    //獲取方式一:通過(guò)助手函數(shù)request()
    $request = request();
    
    //獲取方式二:通過(guò)Request對(duì)象實(shí)例
    $request = Request::instance();
}

//獲取方式三:通過(guò)注入對(duì)象的方式(常用)
public function index(Request $request)
{
    dump($request);
}

Request中常用方法:

#注意:Requset中所有的方法都在thinkphp/think/Request.php文件中,可查閱

public function index(Request $request)
{
    #url信息
    dump($request->domain());                  #域名
    dump($request->pathinfo());                #url的pathinfo信息(含URL后綴)
    dump($request->path());                    #url的pathinfo信息(不含URL后綴)
    dump($request->url());                     #url
    
    #請(qǐng)求方式 GET、POST
    dump($request->method());                  #請(qǐng)求方式
    dump($request->isGet());                   #是否為GET請(qǐng)求
    dump($request->isPost());                  #是否為POST請(qǐng)求
    dump($request->isAjax());                  #是否為AJAX請(qǐng)求
    
    #請(qǐng)求參數(shù)
    dump($request->get());                     #獲取所有參數(shù)的數(shù)組
    dump($request->param());                   #獲取所有參數(shù)的數(shù)組(包含get、post、pathinfo等)
    dump($request->get("name"));                  #獲取name參數(shù)的值
    dump($request->get("age"));                #獲取age參數(shù)的值
    dump($request->param("name"));             #獲取name參數(shù)的值
    dump($request->param("age"));                 #獲取age參數(shù)的值
    
    #獲取模型 控制器 操作
    dump($request->module());                   #當(dāng)前模塊
    dump($request->controller());               #當(dāng)前控制器
    dump($request->action());                   #當(dāng)前方法
}

input助手函數(shù)

/*
 * function input($key = "", $default = null, $filter = ...)
 * $key:表示傳入?yún)?shù)
 * $default:參數(shù)默認(rèn)值
 * $filter:參數(shù)過(guò)濾函數(shù)
 * 獲取輸入數(shù)據(jù) 支持默認(rèn)值和過(guò)濾
 * 
 * 其中$key支持"."語(yǔ)法,支持如下:
 * ["get", "post", "put", "patch", "delete", "route", "param", "request", "session", "cookie",   "server", "env", "path", "file"]
 *
 */
public function index(Request $request)
{
    $res_get = $request->get("name");
    $res_param_get = $request->param("name");
    $res_input_get = input("get.name");           #功能同上,獲取get請(qǐng)求中參數(shù)name對(duì)應(yīng)的數(shù)據(jù)
    $res_input_get1 = input("get.name", "張三");    #如果參數(shù)name對(duì)應(yīng)的數(shù)據(jù)為null,設(shè)置默認(rèn)值
    
    $res_post = $request->post("name");
    $res_param_get = $request->param("name");
    $res_input_post = input("post.name");            #功能同上,獲取post請(qǐng)求中參數(shù)name對(duì)應(yīng)的數(shù)據(jù)
}


響應(yīng)對(duì)象Response

http對(duì)每個(gè)請(qǐng)求都有相應(yīng)的響應(yīng)。

public function getUserInfo()
{
    //動(dòng)態(tài)配置返回?cái)?shù)據(jù)類(lèi)型
    //config("default_return_type", "json");
    Config::set("default_return_type", "json");  //功能同上

    $res = [
        "code"  => 200,
        "body"  => [
            "name"  =>  "張三",
            "age"   =>   22,
            "sex"   =>   "男"
        ],
        "msg"  => "請(qǐng)求成功"
    ];
    return $res;
}












文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28751.html

相關(guān)文章

  • TP5學(xué)習(xí)記錄(Model

    摘要:數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)連接在設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)或者利用方法設(shè)置數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)初始化,并取得數(shù)據(jù)庫(kù)類(lèi)實(shí)例數(shù)據(jù)庫(kù)配置信息數(shù)組,可以在該方法里面進(jìn)行配置數(shù)據(jù)庫(kù)查找直接操作語(yǔ)句描述查詢(xún)語(yǔ)句,然后類(lèi)型語(yǔ)句字符串語(yǔ)句中綁定的字符串常用查詢(xún)語(yǔ)句返回所有記錄, ThinkPHP 數(shù)據(jù)庫(kù)操作 數(shù)據(jù)庫(kù)連接 #在config/database.php設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)或者利用Db::connect()方法設(shè)置數(shù)...

    bingo 評(píng)論0 收藏0
  • TP5實(shí)現(xiàn)支付寶電腦網(wǎng)站支付學(xué)習(xí)筆記

    摘要:第一次做支付寶的支付,踩了點(diǎn)小坑,還算順利。第一步當(dāng)然是在支付寶開(kāi)放平臺(tái)申請(qǐng)公鑰私鑰等,支付寶關(guān)官方文檔都有詳細(xì)介紹,這里就省略。就是那個(gè)支付寶二維碼的頁(yè)面。支付寶支付成功后會(huì)執(zhí)行這兩個(gè)方法,系統(tǒng)會(huì)把你支付的信息用方式異步傳給你的方法。 這兩天在公司做一個(gè)小型WEB項(xiàng)目,需要有支付功能。第一次做支付寶的支付,踩了點(diǎn)小坑,還算順利。激動(dòng)的我趕緊記下實(shí)現(xiàn)的流程。第一步當(dāng)然是在支付寶開(kāi)放平臺(tái)...

    TNFE 評(píng)論0 收藏0
  • Nginx 實(shí)現(xiàn) pathinfo 模式

    摘要:現(xiàn)在要做的就是在接收的模式的請(qǐng)求時(shí),將它還原成標(biāo)準(zhǔn)的模式,這樣服務(wù)器就能正常處理了。還好,中有個(gè)指令可以實(shí)現(xiàn)我們的目的,。 使用過(guò) ThinkPHP 框架開(kāi)發(fā)應(yīng)用的同學(xué)應(yīng)該都會(huì)知道,它有一種 URL 模式是 pathinfo,看起來(lái)類(lèi)似下面的 URL: http://example.com/module/controller/action/key1/value1/key2/value2...

    shixinzhang 評(píng)論0 收藏0
  • Nginx 實(shí)現(xiàn) pathinfo 模式

    摘要:現(xiàn)在要做的就是在接收的模式的請(qǐng)求時(shí),將它還原成標(biāo)準(zhǔn)的模式,這樣服務(wù)器就能正常處理了。還好,中有個(gè)指令可以實(shí)現(xiàn)我們的目的,。 使用過(guò) ThinkPHP 框架開(kāi)發(fā)應(yīng)用的同學(xué)應(yīng)該都會(huì)知道,它有一種 URL 模式是 pathinfo,看起來(lái)類(lèi)似下面的 URL: http://example.com/module/controller/action/key1/value1/key2/value2...

    econi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<