ThinkPHP-入門

一纤控、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è)置模式。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末路召,一起剝皮案震驚了整個濱河市勃刨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌股淡,老刑警劉巖身隐,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唯灵,居然都是意外死亡贾铝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門早敬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忌傻,“玉大人大脉,你說我怎么就攤上這事搞监。” “怎么了镰矿?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵琐驴,是天一觀的道長。 經(jīng)常有香客問我秤标,道長绝淡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任苍姜,我火速辦了婚禮牢酵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衙猪。我一直安慰自己馍乙,他們只是感情好布近,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丝格,像睡著了一般撑瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上显蝌,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天预伺,我揣著相機與錄音,去河邊找鬼曼尊。 笑死酬诀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涩禀。 我是一名探鬼主播料滥,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艾船!你這毒婦竟也來了葵腹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤屿岂,失蹤者是張志新(化名)和其女友劉穎践宴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爷怀,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡阻肩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了运授。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烤惊。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吁朦,靈堂內(nèi)的尸體忽然破棺而出柒室,到底是詐尸還是另有隱情,我是刑警寧澤逗宜,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布雄右,位于F島的核電站,受9級特大地震影響纺讲,放射性物質(zhì)發(fā)生泄漏擂仍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一熬甚、第九天 我趴在偏房一處隱蔽的房頂上張望逢渔。 院中可真熱鬧,春花似錦乡括、人聲如沸肃廓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿昏。三九已至峦剔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間角钩,已是汗流浹背吝沫。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留递礼,地道東北人惨险。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像脊髓,于是被迫代替她去往敵國和親辫愉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容