ThinkPHP-入門

一、ThinkPHP框架

1.什么是框架

php框架是許多代碼的集合,這些代碼是程序結(jié)構(gòu)的代碼(并不是業(yè)務代碼)代碼中有許多函數(shù)、類、功能類包,框架的代碼按一定的標準組成一個有機的功能體,這個功能體里邊有許多設(shè)計模式如MVC 、單例、AR等等

2.不使用框架開發(fā)中遇到的問題

  • 代碼編寫沒有統(tǒng)一的規(guī)范
  • 程序項目生命時間非常短,不延續(xù)
  • 一個小地方的修改會牽扯到全局的變化,牽一發(fā)動全身
  • 不能很好滿足客戶各方面的需求

3.使用框架的好處

  • 框架可以幫助我們快速穩(wěn)定、高效搭建程序系統(tǒng)
  • 該系統(tǒng)由于框架的使用使得本身的維護性、靈活性、適應客戶需求方面得到最大化的增強
  • 使用框架的過程中可以使得我們的注意力全部集中在業(yè)務層面,而無需關(guān)心程序的底層架構(gòu)
  • 可以節(jié)省很多的代碼工作量

4.架構(gòu)文件介紹

ThinkPHP3.2工程目錄

www WEB部署目錄(或者子目錄)
├─index.php 入口文件
├─README.md README文件
├─Application 應用目錄
├─Public 資源文件目錄
└─ThinkPHP 框架目錄
TP框架結(jié)構(gòu)
├─ThinkPHP 框架系統(tǒng)目錄(可以部署在非web目錄下面)
│ ├─Common 核心公共函數(shù)目錄
│ ├─Conf 核心配置目錄
│ ├─Lang 核心語言包目錄
│ ├─Library 框架類庫目錄
│ │ ├─Think 核心Think類庫包目錄
│ │ ├─Behavior 行為類庫目錄
│ │ ├─Org Org類庫包目錄
│ │ ├─Vendor 第三方類庫目錄
│ │ ├─ ... 更多類庫目錄
│ ├─Mode 框架應用模式目錄
│ ├─Tpl 系統(tǒng)模板目錄
│ ├─LICENSE.txt 框架授權(quán)協(xié)議文件
│ ├─logo.png 框架LOGO文件
│ ├─README.txt 框架README文件
│ └─ThinkPHP.php 框架入口文件

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

5.創(chuàng)建應用

  • 1.在項目目錄創(chuàng)建入口文件 shop/index.php
  • 2.創(chuàng)建虛擬主機,訪問應用(設(shè)置略)
<?php
// 使用thinkphp框架開發(fā)shop商城項目
// 框架兩種模式:[默認]生產(chǎn)(線上)開發(fā)(調(diào)試)
defined('APP_DEBUG',true);
defined('APP_DEBUG',false);
// 引用框架的接口文件
include ("../ThinkPHP/ThinkPHP.php")

二、路由形式

什么是路由:
答:系統(tǒng)從URL參數(shù)中分析出當前請求的分組、控制器操作的過程就是路由

1.基本get形式

http://網(wǎng)址/index.php?m=分組&c=控制器&a=操作方法
該方式是最底層的get形式,傳統(tǒng)的參數(shù)傳遞方式,不時尚、不安全。

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

http://網(wǎng)址/index.php/分組/控制器/操作方法
http://網(wǎng)址/index.php/Home/Index/advert

3.rewrite重寫形式(偽靜態(tài)技術(shù))省略index.php入口文件

http://網(wǎng)址/分組/控制器/操作方法

4.兼容模式

http://網(wǎng)址/index.php?s=/分組/控制器/操作方法

三、創(chuàng)建控制器

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

class  UserController extends Controller {
    
    function  login() {
        echo "登錄";
    }
}

四、創(chuàng)建視圖模板(View視圖模板)

1.調(diào)用View視圖

    function  login() {
        echo "登錄";
        $this->display(); // 展現(xiàn)視圖(視圖文件名字(login.html)要與當前操作方法名字一致)
        $this->display('register'); // 訪問其它模板
        $this->display('Goods/register'); // 訪問其它控制器的具體文件
    }
}

五、數(shù)據(jù)庫操作Model模型

1.連接配置數(shù)據(jù)庫

2.創(chuàng)建model模型類

原則上每個數(shù)據(jù)表,都對應一個Model模型類
注意:實例化一個對象,要跟上命名空間

$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); // 可以用于執(zhí)行原生sql語句(普通的Model對象也可以執(zhí)行原生的sql語句)

2.2.2實例化父類Model對象,同時指定操作的數(shù)據(jù)表
該方式使得一個數(shù)據(jù)表即使沒有對應的Model模型類,也不影響我們直接操作該表

$goods1 = new D('Goods'); 
var_dump($goods1);

六、數(shù)據(jù)庫的基本操作

1.數(shù)據(jù)查詢操作

調(diào)用方法:select();

    $goods = new \Model\GoodsModel();
    $goods->select(); // 查詢并返回數(shù)據(jù)表的全部記錄信息
    $goods->select(主鍵id值); // 查詢主鍵信息等于id值的記錄
    $goods->select('id1,id2,id3...'); // 查詢主鍵信息在條件范圍內(nèi)的記錄
    // 使用select()查詢,始終返回一個二維數(shù)組信息
    var_dump($goods);

    $goods = new \Model\GoodsModel();
    $info = $goods->select(); // 查詢并返回數(shù)據(jù)表的全部記錄信息
    // 把獲得的數(shù)據(jù)傳給模板使用
    $this->assin('info',$info);

2.數(shù)據(jù)刪除操作

$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.執(zhí)行原生的sql語句

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

七、表單驗證

VC eg:

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

            }else {
                dump($user->getError());
            }
        }
        $this->display();
    }

Model eg:

<?php

namespace Model;
use Think\Model;

class UserModel extends Model {

    protected $validate = array(

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

七、附件上傳

涉及技術(shù)點

<form enctype="multipart/form-date">
     <input type="file">
</form>

$_FILES接收附件信息

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

八、添加豐富的工具類做分頁處理

<?php

namespace Tools;

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

九、RBAC

RBAC: role base access control 基于角色的用戶訪問權(quán)限控制

    • 管理員表
    • 權(quán)限表
    • 角色表

該方式權(quán)限設(shè)置特點:

  • 用戶----->角色(組)------->權(quán)限
  • 每個組可以對應多個權(quán)限,是已經(jīng)準備好的工作(無需后期設(shè)置)。
  • 管理員進行權(quán)限設(shè)置只需考慮用戶在哪個組即可,操作非常容易、高效、簡便。
  • 是一種非常科學的權(quán)限設(shè)置模式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容