ThinkPHP 入門

1、ThinkPHP框架

1.什麼是框架

php框架是許多代碼的集合,這些代碼是程序結構的代碼(並非業務代碼)代碼中有許多函數、類、功能類包,框架的代碼按必定的標準組成一個有機的功能體,這個功能體裏邊有許多設計模式如MVC 、單例、AR等等php

2.不使用框架開發中遇到的問題

  • 代碼編寫沒有統一的規範
  • 程序項目生命時間很是短,不延續
  • 一個小地方的修改會牽扯到全局的變化,牽一髮動全身
  • 不能很好知足客戶各方面的需求

3.使用框架的好處

  • 框架能夠幫助咱們快速穩定高效搭建程序系統
  • 該系統因爲框架的使用使得自己的維護性、靈活性、適應客戶需求方面獲得最大化的加強
  • 使用框架的過程當中可使得咱們的注意力所有集中在業務層面,而無需關心程序的底層架構
  • 能夠節省不少的代碼工做量

4.架構文件介紹

ThinkPHP3.2工程目錄html

www WEB部署目錄(或者子目錄) ├─index.php 入口文件 ├─README.md README文件 ├─Application 應用目錄 ├─Public 資源文件目錄 └─ThinkPHP 框架目錄 TP框架結構 ├─ThinkPHP 框架系統目錄(能夠部署在非web目錄下面) │ ├─Common 核心公共函數目錄 │ ├─Conf 核心配置目錄 │ ├─Lang 核心語言包目錄 │ ├─Library 框架類庫目錄 │ │ ├─Think 核心Think類庫包目錄 │ │ ├─Behavior 行爲類庫目錄 │ │ ├─Org Org類庫包目錄 │ │ ├─Vendor 第三方類庫目錄 │ │ ├─ ... 更多類庫目錄 │ ├─Mode 框架應用模式目錄 │ ├─Tpl 系統模板目錄 │ ├─LICENSE.txt 框架受權協議文件 │ ├─logo.png 框架LOGO文件 │ ├─README.txt 框架README文件 │ └─ThinkPHP.php 框架入口文件web

Application(程序在第一運行會自動建立) ├─Common 應用公共模塊 │ ├─Common 應用公共函數目錄 │ └─Conf 應用公共配置文件目錄 ├─Home 默認生成的Home模塊 │ ├─Conf 模塊配置文件目錄 │ ├─Common 模塊函數公共目錄 │ ├─Controller 模塊控制器目錄 │ ├─Model 模塊模型目錄 │ └─View 模塊視圖文件目錄 ├─Runtime 運行時目錄 │ ├─Cache 模版緩存目錄 │ ├─Data 數據目錄 │ ├─Logs 日誌目錄 │ └─Temp 緩存目錄sql

5.建立應用

  • 1.在項目目錄建立入口文件 shop/index.php
  • 2.建立虛擬主機,訪問應用(設置略)
<?php
// 使用thinkphp框架開發shop商城項目
// 框架兩種模式:[默認]生產(線上)開發(調試)
defined('APP_DEBUG',true);
defined('APP_DEBUG',false);
// 引用框架的接口文件
include ("../ThinkPHP/ThinkPHP.php")
複製代碼

2、路由形式

什麼是路由: 答:系統從URL參數中分析出當前請求的分組控制器操做的過程就是路由thinkphp

1.基本get形式

http://網址/index.php?m=分組&c=控制器&a=操做方法 該方式是最底層的get形式,傳統的參數傳遞方式,不時尚、不安全。數據庫

2.pathinfo路徑形式[默認方式]

http://網址/index.php/分組/控制器/操做方法 http://網址/index.php/Home/Index/advert設計模式

3.rewrite重寫形式(僞靜態技術)省略index.php入口文件

http://網址/分組/控制器/操做方法數組

4.兼容模式

http://網址/index.php?s=/分組/控制器/操做方法緩存

3、建立控制器

// 命名空間
namespace Home\Controller
use Think\Controller

class  UserController extends Controller {
    
    function  login() {
        echo "登陸";
    }
}
複製代碼

4、建立視圖模板(View視圖模板)

1.調用View視圖

function  login() {
        echo "登陸";
        $this->display(); // 展示視圖(視圖文件名字(login.html)要與當前操做方法名字一致)
        $this->display('register'); // 訪問其它模板
        $this->display('Goods/register'); // 訪問其它控制器的具體文件
    }
}
複製代碼

5、數據庫操做Model模型

1.鏈接配置數據庫

2.建立model模型類

原則上每一個數據表,都對應一個Model模型類 注意:實例化一個對象,要跟上命名空間php框架

$goods = new \Model\GoodsModel();
var_dump($goods);
複製代碼

####### 2.1實例化普通的Model對象

<?php

namespace Model
use  Think\Model

class GoodsModel extends Model {
    
}
複製代碼

####### 2.2實例化基類Model對象 2.2.1實例化父類Model對象

$model = D(); // new Model()
var_dump($model); // 能夠用於執行原生sql語句(普通的Model對象也能夠執行原生的sql語句)
複製代碼

2.2.2實例化父類Model對象,同時指定操做的數據表 該方式使得一個數據表即便沒有對應的Model模型類,也不影響咱們直接操做該表

$goods1 = new D('Goods'); 
var_dump($goods1);
複製代碼

6、數據庫的基本操做

1.數據查詢操做

調用方法:select();

$goods = new \Model\GoodsModel();
    $goods->select(); // 查詢並返回數據表的所有記錄信息
    $goods->select(主鍵id值); // 查詢主鍵信息等於id值的記錄
    $goods->select('id1,id2,id3...'); // 查詢主鍵信息在條件範圍內的記錄
    // 使用select()查詢,始終返回一個二維數組信息
    var_dump($goods);
複製代碼

$goods = new \Model\GoodsModel();
    $info = $goods->select(); // 查詢並返回數據表的所有記錄信息
    // 把得到的數據傳給模板使用
    $this->assin('info',$info);
複製代碼

2.數據刪除操做

$goods1 = new D('Goods');
// 1.第一方式
$z = $goods1->where("password='2345")->delete(); 
// 2.第二種方式
$goods1->user_id = 8; 
$z = $goods1->delete();
// 3.第三種方式
$z = $goods1->delete(10); 
 $z = $goods1->delete("10,21");
複製代碼

3.執行原生的sql語句

$goods2 = new D('Goods');
// 執行原生的sql語句
$sql = "insert select update delete...";
// 1.查詢 (返回一個二維數組結果)
$goods2->query($sql);
// 2.插入 更新 刪除(返回受影響記錄條數)
$goods2->execute($sql);
複製代碼

7、表單驗證

VC eg:

function register() {
        $user = new \Model\UserModel();
        if (!empty($_POST)) {
            $shuju=$user->create();
            if ($shuju) {
                if ($user->add($shuju)) {
                    echo "數據添加成功";
                }

            }else {
                dump($user->getError());
            }
        }
        $this->display();
    }
複製代碼

Model eg:

<?php

namespace Model;
use Think\Model;

class UserModel extends Model {

    protected $validate = array(

       //array(字段,驗證規劃,錯誤提示【驗證提示,附加規劃,驗證時間】),
        // 1.驗證用戶名不能爲空
        array('userName','require','用戶名不能爲空'),
        // 2.驗證密碼不能爲空
        array('password','require','密碼不能爲空'),
    );
}
複製代碼

7、附件上傳

涉及技術點

<form enctype="multipart/form-date">
     <input type="file">
</form>
複製代碼

$_FILES接收附件信息

  • name
  • size
  • tmp_name
  • type
  • error(0:沒問題 12:大小超界限 3:只上傳部分附件 4:沒有上傳附件)
  • move_uploaded_file(臨時路徑名附件,真實路徑名附件)

8、添加豐富的工具類作分頁處理

<?php

namespace Tools;

class Page {
    static $name = "添加分頁處理";
}
複製代碼

9、RBAC

RBAC: role base access control 基於角色的用戶訪問權限控制

    • 管理員表
    • 權限表
    • 角色表

該方式權限設置特色:

  • 用戶----->角色(組)------->權限
  • 每一個組能夠對應多個權限,是已經準備好的工做(無需後期設置)。
  • 管理員進行權限設置只需考慮用戶在哪一個組便可,操做很是容易、高效、簡便。
  • 是一種很是科學的權限設置模式。
相關文章
相關標籤/搜索