tp5.0中及其經常使用方法的一些函數方法(本身看)和技巧(不斷添加中)

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\Viewthink\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對象或閉包查詢

或者使用查詢對象進行查詢,例如:

$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

相關文章
相關標籤/搜索