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