php框架是許多代碼的集合,這些代碼是程序結構的代碼(並非業務代碼)代碼中有許多函數、類、功能類包,框架的代碼按必定的標準組成一個有機的功能體,這個功能體裏邊有許多設計模式如MVC 、單例、AR等等php
快速
、穩定
、高效
搭建程序系統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
<?php
// 使用thinkphp框架開發shop商城項目
// 框架兩種模式:[默認]生產(線上)開發(調試)
defined('APP_DEBUG',true);
defined('APP_DEBUG',false);
// 引用框架的接口文件
include ("../ThinkPHP/ThinkPHP.php")
複製代碼
什麼是路由: 答:系統從URL參數中分析出當前請求的分組
、控制器
和操做
的過程就是路由thinkphp
http://網址/index.php?m=分組&c=控制器&a=操做方法
該方式是最底層的get形式,傳統的參數傳遞方式,不時尚、不安全。數據庫
默認方式
]http://網址/index.php/分組/控制器/操做方法
http://網址/index.php/Home/Index/advert
設計模式
http://網址/分組/控制器/操做方法
數組
http://網址/index.php?s=/分組/控制器/操做方法
緩存
// 命名空間
namespace Home\Controller
use Think\Controller
class UserController extends Controller {
function login() {
echo "登陸";
}
}
複製代碼
function login() {
echo "登陸";
$this->display(); // 展示視圖(視圖文件名字(login.html)要與當前操做方法名字一致)
$this->display('register'); // 訪問其它模板
$this->display('Goods/register'); // 訪問其它控制器的具體文件
}
}
複製代碼
原則上每一個數據表,都對應一個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);
複製代碼
調用方法: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);
複製代碼
$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");
複製代碼
$goods2 = new D('Goods');
// 執行原生的sql語句
$sql = "insert select update delete...";
// 1.查詢 (返回一個二維數組結果)
$goods2->query($sql);
// 2.插入 更新 刪除(返回受影響記錄條數)
$goods2->execute($sql);
複製代碼
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','密碼不能爲空'),
);
}
複製代碼
涉及技術點
<form enctype="multipart/form-date">
<input type="file">
</form>
複製代碼
$_FILES接收附件信息
<?php
namespace Tools;
class Page {
static $name = "添加分頁處理";
}
複製代碼
RBAC: role base access control 基於角色的用戶訪問權限控制
該方式權限設置特色:
用戶在哪一個組便可
,操做很是容易、高效、簡便。