thinkphp 5.1 以上版本只能經過composer來安裝升級。
以防萬一,建議先備份application和修改過的目錄。
cmd或者ps進入網站根目錄。執行以下命令之一:
composer update topthink/framework 5.1.15
composer update topthink/framework=5.1.15
composer update topthink/framework:5.1.15
後面的5.1.15改爲想要升級的版本便可。指定版本有時候頗有用,畢竟最新的未必是最好的。
---------------------
做者:qcw
來源:CSDN
原文:https://blog.csdn.net/xy255c/article/details/80658097
版權聲明:本文爲博主原創文章,轉載請附上博文連接!php
默認狀況下,URL地址中的控制器和操做名是不區分大小寫的html
1 tp5所有小寫thinkphp
模塊在ThinkPHP中的概念其實就是應用目錄下面的子目錄,而官方的規範是目錄名小寫,所以模塊所有采
用小寫命名,不管URL是否開啓大小寫轉換,模塊名都會強制小寫數據庫
2 控制器首字母變成大寫安全
3 駝峯式,用下劃線方式cookie
5.0再也不支持普通的URL訪問方式,因此下面的訪問是無效的,你會發現不管輸入什麼,訪問的都是默認的
控制器和操做^_^
http://tp5.com/index.php?m=index&c=Index&a=hello架構
建議統一採用小寫app
若是但願嚴格區分大小寫訪問(或者要支持駝峯法進行控制器訪問),能夠在應用配置文件中設置:
// 關閉URL自動轉換(支持駝峯訪問控制器)
'url_convert' => false,composer
ThinkPHP5 的架構設計和以前版本的主要區別之一就在於增長了 Request 請求對象和 Response 響應對
象的概念,瞭解了這兩個對象的做用和用法對你的應用開發很是關鍵。dom
ThinkPHP5 的 Request 對象由 think\Request 類完成。
Request 對象的一個主要職責是統一和更安全地獲取當前的請求信息,你須要避免直接操做 $_GET 、$_POST 、 $_REQUEST 、 $_SESSION 、 $_COOKIE ,甚至 $_FILES 等全局變量,而是統一使用
Request 對象提供的方法來獲取請求變量。
若是你的控制器類繼承了\think\Controller
類的話,能夠定義控制器初始化方法_initialize
,在該控制器的方法調用以前首先執行
繼承think\Controller
若是控制器類繼承了 think\Controller 的話,能夠作以下簡化調用:
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello($name = 'World')
{
// 獲取當前URL地址 不含域名
echo 'url: ' . $this->request->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
自動注入請求對象
若是沒有繼承 think\Controller ,則可使用 Request 對象注入的方式來簡化調用:
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request, $name = 'World')
{
// 獲取當前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
提示:
hello方法的request參數是系統自動注入的,而不須要經過URL請求傳入。
使用助手函數
若是既沒有繼承 think\Controller 也不想給操做方法添加額外的 Request 對象參數,那麼也可使用
系統提供的助手,例如:
<?php
namespace app\index\controller;
class Index
{
public function hello($name = 'World')
{
// 獲取當前URL地址 不含域名
echo 'url: ' . request()->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
上面任意一種方式均可以調用當前請求的 Request 對象實例,而後經過請求對象實例的方法來完成不一樣的
信息獲取或者設置。
請求對象
獲取請求變量
系統推薦使用 param 方法統一獲取當前請求變量,該方法最大的優點是讓你不須要區分當前請求類型而使用
不一樣的全局變量或者方法,而且能夠知足大部分的參數需求
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
echo '請求參數:';
dump($request->param());
echo 'name:'.$request->param('name');
}
}
訪問下面的URL地址:
http://tp5.com/index/index/hello.html?test=ddd&name=thinkphp
頁面輸出結果爲:
請求參數:
array (size=2)
'test' => string 'ddd' (length=3)
'name' => string 'thinkphp' (length=8)
name:thinkphp
系統提供了一個input助手函數來簡化 Request 對象的param方法,用法以下:
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
echo '請求參數:';
dump(input());
echo 'name:'.input('name');
}
}
param 方法獲取的參數會自動判斷當前的請求,以 POST 請求爲例的話,參數的優先級別爲:
路由變量 > 當前請求變量($_POST變量) > $_GET變量
param 方法支持變量的過濾和默認值,
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
$name 的默認值 是world, 轉小寫
echo 'name:'.$request->param('name','World','strtolower');
$test 的默認值 是thinkphp, 轉大寫
echo '<br/>test:'.$request->param('test','thinkphp','strtoupper');
}
}
訪問下面的URL地址:
http://tp5.com/index/index/hello.html?test=ddd&name=thinkphp
使用助手函數的代碼爲:
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
echo 'GET參數:';
dump(input('get.'));
echo 'GET參數:name';
dump(input('get.name'));
echo 'POST參數:name';
dump(input('post.name'));
echo 'cookie參數:name';
dump(input('cookie.name'));
echo '上傳文件信息:image';
dump(input('file.image'));
}
}
獲取請求參數
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
echo '請求方法:' . $request->method() . '<br/>';
echo '資源類型:' . $request->type() . '<br/>';
echo '訪問IP:' . $request->ip() . '<br/>';
echo '是否AJax請求:' . var_export($request->isAjax(), true) . '<br/>';
echo '請求參數:';
dump($request->param());
echo '請求參數:僅包含name';
dump($request->only(['name']));
echo '請求參數:排除name';
dump($request->except(['name']));
}
}
獲取URL信息
public function hello(Request $request,$name = 'World')
{
// 獲取當前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 獲取當前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 獲取當前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 獲取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 獲取當前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 獲取URL訪問的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 獲取URL訪問的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>';
// 獲取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
// 獲取URL地址中的PATH_INFO信息 不含後綴
echo 'pathinfo: ' . $request->path() . '<br/>';
// 獲取URL地址中的後綴信息
echo 'ext: ' . $request->ext() . '<br/>';
return 'Hello,' . $name . '!';
}
數據庫
1. 數據庫原生查詢(SQL查詢);
2. 數據庫鏈式查詢(查詢構造器);
3. 模型的對象化查詢;
若是你使用了多個模塊,而且不一樣的模塊採用不一樣的數據庫鏈接,那麼能夠在每一個模塊的目錄下面單獨定義數據庫配置。
提示:
模塊的數據庫配置文件中只須要配置和全局數據庫配置文件差別的部分,相同的不須要重複配置。
1 原生查詢
原則上,讀操做都使用 query 方法,寫操做使用 execute 方法便可
//建立
$result = Db::excute('insert into test (name,age) values ("哈哈",18)');
//更新
$result =Db::excute('update test set name="嘻嘻" where id= 21');
//查詢
$result = Db::query('select * from test where id =1 ');
模型
模型類可使用靜態調用或者實例化調用兩種方式,例如:
// 靜態調用 $user = User::get(1); $user->name = 'thinkphp'; $user->save(); // 實例化模型 $user = new User; $user->name= 'thinkphp'; $user->save(); // 使用 Loader 類實例化(單例) $user = Loader::model('User'); // 或者使用助手函數`model` $user = model('User'); $user->name= 'thinkphp'; $user->save();