摘要:可以在入口文件中定義,然后新建文件夾,達(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)3306,Apache/Nginx默認(rèn)端口號(hào)80
三種安裝方法:
github上下載think, framework
composer下載
thinkphp官網(wǎng)下載
composer簡(jiǎn)介
composer是php的一個(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的值,DocumentRoot為web的根目錄,然后重啟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
摘要:數(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ù)...
摘要:第一次做支付寶的支付,踩了點(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)...
摘要:現(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...
摘要:現(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...
閱讀 3096·2021-09-22 15:20
閱讀 2613·2019-08-30 15:54
閱讀 1979·2019-08-30 14:06
閱讀 3125·2019-08-30 13:05
閱讀 2475·2019-08-29 18:36
閱讀 583·2019-08-29 15:10
閱讀 536·2019-08-29 11:17
閱讀 834·2019-08-28 18:11