一纤控、ThinkPHP框架
1.什么是框架
php框架是許多代碼的集合柔逼,這些代碼是程序結(jié)構(gòu)的代碼(并不是業(yè)務(wù)代碼)代碼中有許多函數(shù)、類属愤、功能類包,框架的代碼按一定的標準組成一個有機的功能體酸役,這個功能體里邊有許多設(shè)計模式如MVC 住诸、單例、AR等等
2.不使用框架開發(fā)中遇到的問題
- 代碼編寫沒有統(tǒng)一的規(guī)范
- 程序項目生命時間非常短涣澡,不延續(xù)
- 一個小地方的修改會牽扯到全局的變化贱呐,牽一發(fā)動全身
- 不能很好滿足客戶各方面的需求
3.使用框架的好處
- 框架可以幫助我們
快速
、穩(wěn)定
入桂、高效
搭建程序系統(tǒng) - 該系統(tǒng)由于框架的使用使得本身的維護性奄薇、靈活性、適應(yīng)客戶需求方面得到最大化的增強
- 使用框架的過程中可以使得我們的注意力全部集中在業(yè)務(wù)層面抗愁,而無需關(guān)心程序的底層架構(gòu)
- 可以節(jié)省很多的代碼工作量
4.架構(gòu)文件介紹
ThinkPHP3.2工程目錄
www WEB部署目錄(或者子目錄)
├─index.php 入口文件
├─README.md README文件
├─Application 應(yīng)用目錄
├─Public 資源文件目錄
└─ThinkPHP 框架目錄
TP框架結(jié)構(gòu)
├─ThinkPHP 框架系統(tǒng)目錄(可以部署在非web目錄下面)
│ ├─Common 核心公共函數(shù)目錄
│ ├─Conf 核心配置目錄
│ ├─Lang 核心語言包目錄
│ ├─Library 框架類庫目錄
│ │ ├─Think 核心Think類庫包目錄
│ │ ├─Behavior 行為類庫目錄
│ │ ├─Org Org類庫包目錄
│ │ ├─Vendor 第三方類庫目錄
│ │ ├─ ... 更多類庫目錄
│ ├─Mode 框架應(yīng)用模式目錄
│ ├─Tpl 系統(tǒng)模板目錄
│ ├─LICENSE.txt 框架授權(quán)協(xié)議文件
│ ├─logo.png 框架LOGO文件
│ ├─README.txt 框架README文件
│ └─ThinkPHP.php 框架入口文件
Application(程序在第一運行會自動創(chuàng)建)
├─Common 應(yīng)用公共模塊
│ ├─Common 應(yīng)用公共函數(shù)目錄
│ └─Conf 應(yīng)用公共配置文件目錄
├─Home 默認生成的Home模塊
│ ├─Conf 模塊配置文件目錄
│ ├─Common 模塊函數(shù)公共目錄
│ ├─Controller 模塊控制器目錄
│ ├─Model 模塊模型目錄
│ └─View 模塊視圖文件目錄
├─Runtime 運行時目錄
│ ├─Cache 模版緩存目錄
│ ├─Data 數(shù)據(jù)目錄
│ ├─Logs 日志目錄
│ └─Temp 緩存目錄
5.創(chuàng)建應(yīng)用
- 1.在項目目錄創(chuàng)建入口文件 shop/index.php
- 2.創(chuàng)建虛擬主機馁蒂,訪問應(yī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ù)表涵紊,都對應(yīng)一個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ù)表即使沒有對應(yīng)的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)限
- 每個組可以對應(yīng)多個權(quán)限,是已經(jīng)準備好的工作(無需后期設(shè)置)株汉。
- 管理員進行權(quán)限設(shè)置只需考慮
用戶在哪個組即可
,操作非常容易筐乳、高效、簡便乔妈。 - 是一種非瞅疲科學(xué)的權(quán)限設(shè)置模式。