## 什么是thinkphp
1. 國人開發的php框架
2. 源碼中文注釋, 方便理解
3. 中文文檔詳盡
4. 使用者多, 教程豐富
## 官網
* http://www.thinkphp.cn/
* http://www.hmoore.net/manual/thinkphp5/118003(官方文檔)
## 安裝
1. 官網下載, 復制粘貼
2. 檢查環境
3. 訪問public文件夾
## 配置虛擬主機
* 配置vhosts-conf
* 修改hosts
## URL路徑設計
* http://serverName/index.php(或者其它應用入口文件)/模塊/控制器/操作/[參數名/參數值…]
## 格式化php代碼
1. 安裝phpfmt插件
~~~
ctrl+shift+p
搜索phpfmt
enter
~~~
2. 配置插件
~~~
{
"format_on_save": true,
"php_bin": "G:/phpStudy/php/php-7.0.12-nts/php.exe",
}
~~~
3. psr1和psr2區別
`花括號點位置不同`
## API友好
~~~
<?php
namespace app\index\controller;
class Index {
public function index() {
$data = array(
'name' => 'red_panda',
'address' => 'China',
);
$code = 200;
$msg = 'ok';
return ['data' => $data, 'code' => $code, 'message' => $msg];
}
}
~~~
~~~
'default_return_type'=>'json'
~~~
## 獲取請求參數
~~~
<?php
namespace app\index\controller;
use \think\Request;
class Index {
public function index() {
$request = Request::instance();
echo '請求方法:' . $request->method() . '<br/>';
echo '訪問地址:' . $request->ip() . '<br/>';
echo '請求參數:';
dump($request->param());
echo '請求參數:僅包含name,sex';
dump($request->only(['name', 'sex']));
echo '請求參數:排除name,sex';
dump($request->except(['name', 'sex']));
}
}
~~~
## 判斷請求類型
~~~
// 是否為 GET 請求
if (Request::instance()->isGet()) echo "當前為 GET 請求";
// 是否為 POST 請求
if (Request::instance()->isPost()) echo "當前為 POST 請求";
// 是否為 PUT 請求
if (Request::instance()->isPut()) echo "當前為 PUT 請求";
// 是否為 DELETE 請求
if (Request::instance()->isDelete()) echo "當前為 DELETE 請求";
// 是否為 Patch 請求
if (Request::instance()->isPatch()) echo "當前為 PATCH 請求";
~~~
## 驗證參數數據
~~~
<?php
namespace app\index\controller;
use \think\Validate;
class Index {
public function index() {
$rule = [
'name' => 'require|max:25',
'age' => 'number|between:1,120',
'email' => 'email',
];
$msg = [
'name.require' => '名稱必須',
'name.max' => '名稱最多不能超過25個字符',
'age.number' => '年齡必須是數字',
'age.between' => '年齡只能在1-120之間',
'email' => '郵箱格式錯誤',
];
$data = input('post.');
$validate = new Validate($rule, $msg);
$result = $validate->check($data);
if (!$validate->check($data)) {
dump($validate->getError());
}
}
}
~~~
## 連接數據庫
~~~
/* 數據庫設置 */
'database' => [
// 數據庫類型
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'thinkphp',
// 數據庫用戶名
'username' => 'root',
// 數據庫密碼
'password' => '',
// 數據庫連接端口
'hostport' => '',
// 數據庫連接參數
'params' => [],
// 數據庫編碼默認采用utf8
'charset' => 'utf8',
// 數據庫表前綴
'prefix' => '',
// 數據庫調試模式
'debug' => false,
],
~~~
## 原生sql語句查詢
~~~
<?php
namespace app\index\controller;
use think\Db;
class Index
{
public function index()
{
$res = Db::query('select version()');
return $res;
}
}
~~~