1.目錄結構php
2.路由css
3..控制器html
4.模型寫法thinkphp
5.視圖標籤數據庫
6.數據庫操做apache
7.表單驗證json
8.分頁數組
---------------------------cookie
1.目錄結構session
project 應用部署目錄
├─application 應用目錄(可設置)
│ ├─common 公共模塊目錄(可更改)
│ ├─index 模塊目錄(可更改)
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊函數文件
│ │ ├─controller 控制器目錄
│ │ ├─model 模型目錄
│ │ ├─view 視圖目錄
│ │ └─ ... 更多類庫目錄
│ ├─command.php 命令行工具配置文件
│ ├─common.php 應用公共(函數)文件
│ ├─config.php 應用(公共)配置文件
│ ├─database.php 數據庫配置文件
│ ├─tags.php 應用行爲擴展定義文件
│ └─route.php 路由配置文件
├─extend 擴展類庫目錄(可定義)
├─public WEB 部署目錄(對外訪問目錄)
│ ├─static 靜態資源存放目錄(css,js,image)
│ ├─index.php 應用入口文件
│ ├─router.php 快速測試文件
│ └─.htaccess 用於 apache 的重寫
├─runtime 應用的運行時目錄(可寫,可設置)
├─vendor 第三方類庫目錄(Composer)
├─thinkphp 框架系統目錄
│ ├─lang 語言包目錄
│ ├─library 框架核心類庫目錄
│ │ ├─think Think 類庫包目錄
│ │ └─traits 系統 Traits 目錄
│ ├─tpl 系統模板目錄
│ ├─.htaccess 用於 apache 的重寫
│ ├─.travis.yml CI 定義文件
│ ├─base.php 基礎定義文件
│ ├─composer.json composer 定義文件
│ ├─console.php 控制檯入口文件
│ ├─convention.php 慣例配置文件
│ ├─helper.php 助手函數文件(可選)
│ ├─LICENSE.txt 受權說明文件
│ ├─phpunit.xml 單元測試配置文件
│ ├─README.md README 文件
│ └─start.php 框架引導文件
├─build.php 自動生成定義文件(參考)
├─composer.json composer 定義文件
├─LICENSE.txt 受權說明文件
├─README.md README 文件
├─think 命令行入口文件
2.路由(路由的寫法 https://www.kancloud.cn/manual/thinkphp5/118029 )
Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)');
例子
Route::rule('new/:id','News/update','POST');
'test' =>'index/index/show'
加了路由以後控制器能夠用url()方法獲取路由
echo url('index/index/show');
也就是說,無論test怎麼變,只要控制器正確,返回的就是route定義數組的別名.
3.控制器
3.1)控制器之request對象
public function show(Request $request) { var_dump($request); var_dump(\request()); Request::instance(); }
其中的經常使用方法
//thinkphp\library\think\Request.php 基本全部方法 $request->domain();//返回域名 $request->pathinfo(); $request->path(); $request->method(); $request->isGet(); $request->isAjax(); $request->get();//獲取get參數 不包含pathinfo變量 $request->param();//pathinfo值和get都傳遞過來 $request->post();//post值 session('key','value');//開啓session 配置文件中開啓 $request->session();//session值 cookie('key1','value1'); $request->cookie(); $request->cookie('key1'); $request->param('key1');//頁能夠直接獲取value1 $request->module();//獲取模塊 $request->controller();//獲取控制器 $request->action();//獲取操做點 $request->url(); $request->baseUrl(); $request->file();
//input助手函數 thinkphp\helper.php echo $request->param('name'); $p = 'param'; echo $request->$p('name'); echo input('name');//先去param,再找get post put session cookie server env path file ... echo input('post.name',10);//去post值 echo input('session.name',10);//去session值
3.2)控制器返回值
//更改返回類型 //能夠動態的切換控制器的返回類型 -也能夠不設置 config::Set('default_return_type','xml');//返回值是xml json 返回值自動轉換 //也能夠 $data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];
return $data; // 指定json數據輸出 return json(['data'=>$data,'code'=>1,'message'=>'操做完成']); // 指定xml數據輸出 return xml(['data'=>$data,'code'=>1,'message'=>'操做完成']);
5.視圖 (參考 https://www.kancloud.cn/manual/thinkphp5/118048 )頁面引入資源文件(__STATIC__/)
https://www.kancloud.cn/manual/thinkphp5/118120
5.1)渲染模板
namespace app\index\controller; use think\View; class Index { public function index() { $view = new View(); return $view->fetch('index'); } }
5.2)或者直接使用view助手函數渲染模板輸出,例如:
namespace app\index\controller; class Index { public function index() { return view('index'); } }
5.3)若是繼承了think\Controller
類的話,能夠直接調用think\View
及think\Request
類的方法,例如:
namespace app\index\controller; use think\Controller; class Index extends Controller { public function index() { // 獲取包含域名的完整URL地址 $this->assign('domain',$this->request->url(true)); return $this->fetch('index'); } }
視圖實例化渲染:https://www.kancloud.cn/manual/thinkphp5/118113
5.4)thinkphp模板中的常量 (有些已經失效能夠本身定義)
<link rel="stylesheet" href="__STATIC__/layui/css/layui.css"> //<link rel="stylesheet" href="/public/static/layui/css/layui.css">
默認的模板替換規則: ../Public : 會被替換成當前項目的公共模板目錄 一般是 / 項目目錄 /Tpl/default/Public/ __PUBLIC__ :會被替換成當前網站的公共目錄 一般是 /Public/ __TMPL__ : 會替換成項目的模板目錄 一般是 / 項目目錄 /Tpl/default/ __ROOT__ : 會替換成當前網站的地址(不含域名) __APP__ : 會替換成當前項目的 URL 地址 (不含域名) __URL__ : 會替換成當前模塊的 URL 地址(不含域名) __ACTION__ :會替換成當前操做的 URL 地址 (不含域名) __SELF__ : 會替換成當前的頁面 URL
還能夠經過在項目配置文件中配置TMPL_PARSE_STRING的值來自定義替換規則,如:
TMPL_PARSE_STRING => array( '__PUBLIC__' => '/Common' , // 更改默認的 __PUBLIC__ 替換規則 '__UPLOAD__' => '/Public/Uploads/' , // 增長新的上傳路徑替換規則 )
示例:
文件路徑:/Home/Tpl/default/User/index.html,代碼以下:
<p>__ROOT__表明當前網站的網址</p> <p>__URL__表明當前模塊的URL地址/index.php/User</p> <p>../Public表明/aoli/Tpl/default/Public</p> <p>__PUBLIC__表明項目公共文件目錄/Public</p> <p>__TMPL__表明當前項目的模板目錄/aoli/Tpl/default/</p> <p>__APP__表明當前項目的入口文件地址/index.php</p> <p>__ACTION__表明當前的操做地址/index.php/User/index</p> <p>__SELF__表明當前URL地址/index.php/User/</p> <p>__UPLOAD__</p> <form action="__URL__/add" method="post"> <input type="text" name="username" /> <input type="submit" value="註冊" /> </form>
http://www.jb51.net/article/54217.htm
http://www.thinkphp.cn/topic/8617.html
4.模型
6.數據庫 ( https://www.kancloud.cn/manual/thinkphp5/118058 )
6.1)基本使用
Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
6.2)查詢構造器
Db::name('user')->where('id',1)->find();
Db::name('user')->where('status',1)->select();
或者使用查詢對象進行查詢,例如:
$query = new \think\db\Query(); $query->table('think_user')->where('status',1); Db::find($query); Db::select($query);
或者直接使用閉包函數查詢,例如:
Db::select(function($query){ $query->table('think_user')->where('status',1); });
$data = ['foo' => 'bar', 'bar' => 'foo']; Db::table('think_user')->insert($data);
$data = [ ['foo' => 'bar', 'bar' => 'foo'], ['foo' => 'bar1', 'bar' => 'foo1'], ['foo' => 'bar2', 'bar' => 'foo2'] ]; Db::name('user')->insertAll($data);
Db::table('think_user') ->where('id', 1) ->update([ 'login_time' => ['exp','now()'], 'login_times' => ['exp','login_times+1'], ]);
Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');
// 根據主鍵刪除 Db::table('think_user')->delete(1); Db::table('think_user')->delete([1,2,3]); // 條件刪除 Db::table('think_user')->where('id',1)->delete(); Db::table('think_user')->where('id','<',10)->delete();
$result = Db::table('think_user')->where(function ($query) { $query->where('id', 1)->whereor('id', 2); })->whereOr(function ($query) { $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp'); })->select();
查詢用到的語法: https://www.kancloud.cn/manual/thinkphp5/135182
https://www.kancloud.cn/manual/thinkphp5/139063
// 啓動事務 Db::startTrans(); try{ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事務 Db::commit(); } catch (\Exception $e) { // 回滾事務 Db::rollback(); }
7.表單驗證
8.分頁
一個帶條件分頁
$where = []; // 查詢條件 $keyword = input('keywords'); if($keyword){ $where['orderNumber|groupName'] = ['like',$keyword];//豎線是or的意思,能夠看手冊 } // 查詢 $list = Db::table("reportform") ->where($where) ->order('creatTime desc') ->paginate(15,false, ['query' => request()->param()]); // 獲取分頁顯示 $page = $list->render();
9.thinkphp的文件處理類
轉:https://www.kancloud.cn/manual/thinkphp5