摘要:可以在入口文件中定義,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。動態(tài)配置返回數(shù)據(jù)類型功能同上張三男請求成功
ThinkPHP5
ThinkPHP是一個免費(fèi)開源的、快速簡單的、面向?qū)ο蟮摹⑤p量級PHP開發(fā)框架。
為什么選擇ThinkPHP5?
ThinkPHP5采用了全新的架構(gòu)思想;
優(yōu)化了核心是一個顛覆性的版本;
支持composer方式安裝;
對API進(jìn)行了大量的優(yōu)化更符合了現(xiàn)代web開發(fā)的方式;
MVC定義:
MVC全名Model-View-Controller,是模型、視圖、控制器的縮寫,是一種軟件設(shè)計典范,而不是一種設(shè)計模式。其特點(diǎn):
耦合性低
重用行高
可維護(hù)性高
有利于軟件的工程化
開發(fā)環(huán)境:
PHP >= 5.4.0
Mysql
Apache/Nginx
Mysql默認(rèn)端口號3306,Apache/Nginx默認(rèn)端口號80
三種安裝方法:
github上下載think, framework
composer下載
thinkphp官網(wǎng)下載
composer簡介
composer是php的一個依賴管理工具
文檔:http://docs.phpcomposer.com/
安裝:
curl -sS https://getcomposer.org/installer | php #下載composer安裝工具 sudo mv composer.phar /usr/local/bin/composer #將下載下來的composer.phar移動到系統(tǒng)的PATH目錄,這樣全局能夠進(jìn)行訪問。
composer安裝TP5
composer create-project --prefer-dist topthink/think proj_name
Apache設(shè)置根目錄
/Applications/XAMPP/etc/httpd.conf文件為Apache的核心配置文件,打開后重新設(shè)置DocumentRoot的值,DocumentRoot為web的根目錄,然后重啟Apache服務(wù)器即可。
TP5目錄講解
tp5 |-application #應(yīng)用目錄 |-index |-controller #控制器 |-view #視圖 |-model #模型 |-command.php #控制臺的配置文件 |-common.php #項目全局的公共文件 |-config.php #應(yīng)用的配置文件 |-database.php #數(shù)據(jù)庫配置文件 |-route.php #路由文件 |-tag.php #應(yīng)用行為擴(kuò)展文件 |-extend #擴(kuò)展類庫目錄 |-public #網(wǎng)站對外訪問目錄 |-index.php #應(yīng)用入口文件,所有的請求都是通過index.php之后進(jìn)行轉(zhuǎn)發(fā) |-robots.text #定義哪些文件能被搜索引擎爬取,哪些不能 |-router.php #框架快速啟動的配置文件 |-static #存放網(wǎng)站的靜態(tài)資源,如css,html,image等 |-runtime #運(yùn)行時目錄,包含項目運(yùn)行時的緩存文件、編譯文件、日志等 |-thinkphp #框架核心目錄 |-lang #語言包目錄 |-library #框架核心類庫目錄 |-tpl #系統(tǒng)模版文件 |-base.php #框架基礎(chǔ)文件,常用于定義一些常量 |-composer.json #composer定義文件 |-console.php #控制臺入口文件 |-convention.php #慣例配置文件 |-helper.php #助手函數(shù)文件 |-phpunit.xml #單元測試配置文件 |-README.md #README文件 |-start.php #框架引導(dǎo)文件 |-vendor #第三方類庫目錄 |-bulid.php #自動生成定義文件 |-composer.json #composer定義文件 |-LICENSE.text #授權(quán)說明文件 |-README.md #README文件 |-think #命令行工具入口
開發(fā)規(guī)范:
目錄名使用小寫+下劃線的方式命名
類文件名采用大駝峰法,類文件中的類和類文件名一致,其他文件名均使用小寫
方法名采用小駝峰法
屬性名采用小駝峰法
以雙下劃線__開頭的方法屬于魔術(shù)方法
常量以大寫字母和下劃線命名
配置參數(shù)以小寫字母和下劃線命名
數(shù)據(jù)庫表和字段采用小寫+下劃線的命名方式 不能以下劃線開頭
應(yīng)用類庫的命名空間統(tǒng)一為app(可以配置)
ThinkPHP5模塊設(shè)計
5.0版本對模塊的功能做了靈活設(shè)計,默認(rèn)采用多模塊的架構(gòu),并且支持單一模塊設(shè)計,所有模塊的命名空間均以app作為根命名空間(可配置更改,一般不進(jìn)行更改)。
注意:application目錄下創(chuàng)建的common文件夾,common會默認(rèn)作為公共模塊,里面的文件,不能通過url直接訪問
設(shè)置命名空間:namespace appindexcontroller;
設(shè)置別名:use appcommoncontrollerIndex as commonIndex;
ThinkPHP5配置
慣例配置
ThinkPHP框架下的默認(rèn)配置,在think/convention.php文件中,一般不進(jìn)行修改。
應(yīng)用配置
應(yīng)用配置文件是應(yīng)用初始化的時候首先加載的公共配置文件,默認(rèn)位于application/config.php,作用域為整個應(yīng)用項目。可以在入口文件public/index.php中定義CONF_PATH,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。
在config目錄下創(chuàng)建config.php,添加應(yīng)用配置或者對慣例配置進(jìn)行修改(需要更改慣例配置時,一般不在原文件中直接更改,可以在創(chuàng)建的config.php中進(jìn)行更改)
在config目錄下創(chuàng)建database.php,在里面配置數(shù)據(jù)庫連接
//定義配置文件目錄 define("CONF_PATH", __DIR__ . "/../application/config/");
擴(kuò)展配置
在上面應(yīng)用配置config目錄下添加名為extra的文件夾,然后添加配置文件,將會以數(shù)組形式作為元素添加到應(yīng)用配置下。
場景配置
在不同場景下設(shè)置不同的配置,可以利用設(shè)置數(shù)據(jù)庫的連接參數(shù)
home.php:家庭辦公環(huán)境的配置項
office.php:公司辦公環(huán)境的配置項
模塊配置
模塊配置文件是針對某個模塊下的配置文件,一般位于application/模塊名/config.php,可以在和application同級目錄下創(chuàng)建文件路徑config/index/config.php,然后在public/index.php中定義CONF_PATH為該路徑,這種情況也分為應(yīng)用配置config/config.php和模塊配置config/index/config.php,但會忽略application路徑下的配置。
動態(tài)配置
在具體的控制器或者方法里面進(jìn)行動態(tài)配置,動態(tài)配置只在當(dāng)前的控制器或者當(dāng)前的方法中有效。比如在Index.php下設(shè)置如下代碼,就可以為Index控制器動態(tài)的添加或修改配置。
public function __construct() { config("before", "beforeAction"); Config::set("before", "beforeAction"); //功能同上,動態(tài)配置 }
Config類下的方法
目錄:thinkphp/library/think/Config.php
range($range):設(shè)定配置參數(shù)的作用域
parse($config, $type = "", $name = "", $range = ""):解析配置文件或內(nèi)容
load($file, $name = "", $range = ""):加載配置文件(PHP格式)
has($name, $range = ""):檢測配置是否存在
get($name = null, $range = ""):獲取配置參數(shù) 為空則獲取所有配置
set($name, $value = null, $range = ""):設(shè)置配置參數(shù) name 為數(shù)組則為批量設(shè)置
reset($range = ""):重置配置參數(shù)
環(huán)境變量配置和使用
入口文件
單入口文件:應(yīng)用程序的所有http請求都由某一個文件接受并由這個文件轉(zhuǎn)發(fā)到功能代碼中。ThinkPHP符合這種功能規(guī)范,所有的http請求都由public/index.php文件接收并轉(zhuǎn)發(fā),根據(jù)不同的參數(shù),轉(zhuǎn)發(fā)到不同的控制器調(diào)用不同的方法,最終實(shí)現(xiàn)不同的功能。
隱藏入口文件
public/.htaccess里面: # 將請求轉(zhuǎn)發(fā)到index.php之后 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
入口文件綁定
public/index.php中添加: define("BIND_MODULE", "admin"); #綁定模塊為admin,只能訪問admin模塊下的所有文件 define("BIND_MODULE", "admin/Index"); #綁定的模塊為admin下的Index控制器,只能訪問Index控制器下的所有方法
可以在public目錄下添加文件api.php,然后在文件下定義應(yīng)用目錄、加載框架引導(dǎo)文件等..,然后進(jìn)行模塊綁定,這樣可以實(shí)現(xiàn)通過訪問api.php下的模塊實(shí)現(xiàn)讓用戶只能訪問具體模塊api下的文件,這樣一個項目中可以進(jìn)行多種開發(fā)(API開發(fā)等)。
應(yīng)用配置中:
auto_bind_module:自動綁定模塊
其值設(shè)置為true之后
入口文件api.php會自動綁定為api模塊
但入口文件index.php不會自動綁定為index模塊
路由
將請求地址url和具體控制器中的具體方法綁定,通過路由來轉(zhuǎn)發(fā)使其對應(yīng)。
在conf/config.php中添加(也可以不添加,系統(tǒng)默認(rèn)開啟路由):
"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)了通過訪問localhost/info/5可以訪問localhost/index/Index/info/5。
請求對象Request
ThinkPHP是一個單入口框架,所有的請求都通過index.php,可以通過index.php來接收所有的http請求,請求中的所有參數(shù)都可以通過Request對象來接收。
獲取Request對象的三種方式:
public function index() { //獲取方式一:通過助手函數(shù)request() $request = request(); //獲取方式二:通過Request對象實(shí)例 $request = Request::instance(); } //獲取方式三:通過注入對象的方式(常用) 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 #請求方式 GET、POST dump($request->method()); #請求方式 dump($request->isGet()); #是否為GET請求 dump($request->isPost()); #是否為POST請求 dump($request->isAjax()); #是否為AJAX請求 #請求參數(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ù)過濾函數(shù) * 獲取輸入數(shù)據(jù) 支持默認(rèn)值和過濾 * * 其中$key支持"."語法,支持如下: * ["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請求中參數(shù)name對應(yīng)的數(shù)據(jù) $res_input_get1 = input("get.name", "張三"); #如果參數(shù)name對應(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請求中參數(shù)name對應(yīng)的數(shù)據(jù) }
響應(yīng)對象Response
http對每個請求都有相應(yīng)的響應(yīng)。 public function getUserInfo() { //動態(tài)配置返回數(shù)據(jù)類型 //config("default_return_type", "json"); Config::set("default_return_type", "json"); //功能同上 $res = [ "code" => 200, "body" => [ "name" => "張三", "age" => 22, "sex" => "男" ], "msg" => "請求成功" ]; return $res; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/28751.html
摘要:數(shù)據(jù)庫操作數(shù)據(jù)庫連接在設(shè)置數(shù)據(jù)庫連接參數(shù)或者利用方法設(shè)置數(shù)據(jù)庫連接數(shù)據(jù)庫初始化,并取得數(shù)據(jù)庫類實(shí)例數(shù)據(jù)庫配置信息數(shù)組,可以在該方法里面進(jìn)行配置數(shù)據(jù)庫查找直接操作語句描述查詢語句,然后類型語句字符串語句中綁定的字符串常用查詢語句返回所有記錄, ThinkPHP 數(shù)據(jù)庫操作 數(shù)據(jù)庫連接 #在config/database.php設(shè)置數(shù)據(jù)庫連接參數(shù)或者利用Db::connect()方法設(shè)置數(shù)...
摘要:第一次做支付寶的支付,踩了點(diǎn)小坑,還算順利。第一步當(dāng)然是在支付寶開放平臺申請公鑰私鑰等,支付寶關(guān)官方文檔都有詳細(xì)介紹,這里就省略。就是那個支付寶二維碼的頁面。支付寶支付成功后會執(zhí)行這兩個方法,系統(tǒng)會把你支付的信息用方式異步傳給你的方法。 這兩天在公司做一個小型WEB項目,需要有支付功能。第一次做支付寶的支付,踩了點(diǎn)小坑,還算順利。激動的我趕緊記下實(shí)現(xiàn)的流程。第一步當(dāng)然是在支付寶開放平臺...
摘要:現(xiàn)在要做的就是在接收的模式的請求時,將它還原成標(biāo)準(zhǔn)的模式,這樣服務(wù)器就能正常處理了。還好,中有個指令可以實(shí)現(xiàn)我們的目的,。 使用過 ThinkPHP 框架開發(fā)應(yīng)用的同學(xué)應(yīng)該都會知道,它有一種 URL 模式是 pathinfo,看起來類似下面的 URL: http://example.com/module/controller/action/key1/value1/key2/value2...
摘要:現(xiàn)在要做的就是在接收的模式的請求時,將它還原成標(biāo)準(zhǔn)的模式,這樣服務(wù)器就能正常處理了。還好,中有個指令可以實(shí)現(xiàn)我們的目的,。 使用過 ThinkPHP 框架開發(fā)應(yīng)用的同學(xué)應(yīng)該都會知道,它有一種 URL 模式是 pathinfo,看起來類似下面的 URL: http://example.com/module/controller/action/key1/value1/key2/value2...
閱讀 3150·2021-09-22 15:20
閱讀 2671·2019-08-30 15:54
閱讀 2038·2019-08-30 14:06
閱讀 3187·2019-08-30 13:05
閱讀 2552·2019-08-29 18:36
閱讀 629·2019-08-29 15:10
閱讀 583·2019-08-29 11:17
閱讀 890·2019-08-28 18:11