ThinkPHP-入门

一、ThinkPHP框架

1.什么是框架

php框架是许多代码的集合,这些代码是程序结构的代码(并不是业务代码)代码中有许多函数、类、功能类包,框架的代码按一定的标准组成一个有机的功能体,这个功能体里边有许多设计模式如MVC 、单例、AR等等

2.不使用框架开发中遇到的问题

  • 代码编写没有统一的规范
  • 程序项目生命时间非常短,不延续
  • 一个小地方的修改会牵扯到全局的变化,牵一发动全身
  • 不能很好满足客户各方面的需求

3.使用框架的好处

  • 框架可以帮助我们快速稳定高效搭建程序系统
  • 该系统由于框架的使用使得本身的维护性、灵活性、适应客户需求方面得到最大化的增强
  • 使用框架的过程中可以使得我们的注意力全部集中在业务层面,而无需关心程序的底层架构
  • 可以节省很多的代码工作量

4.架构文件介绍

ThinkPHP3.2工程目录

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 框架入口文件

Application(程序在第一运行会自动创建)
├─Common 应用公共模块
│ ├─Common 应用公共函数目录
│ └─Conf 应用公共配置文件目录
├─Home 默认生成的Home模块
│ ├─Conf 模块配置文件目录
│ ├─Common 模块函数公共目录
│ ├─Controller 模块控制器目录
│ ├─Model 模块模型目录
│ └─View 模块视图文件目录
├─Runtime 运行时目录
│ ├─Cache 模版缓存目录
│ ├─Data 数据目录
│ ├─Logs 日志目录
│ └─Temp 缓存目录

5.创建应用

  • 1.在项目目录创建入口文件 shop/index.php
  • 2.创建虚拟主机,访问应用(设置略)
<?php
// 使用thinkphp框架开发shop商城项目
// 框架两种模式:[默认]生产(线上)开发(调试)
defined('APP_DEBUG',true);
defined('APP_DEBUG',false);
// 引用框架的接口文件
include ("../ThinkPHP/ThinkPHP.php")

二、路由形式

什么是路由:
答:系统从URL参数中分析出当前请求的分组控制器操作的过程就是路由

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=/分组/控制器/操作方法

三、创建控制器

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

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

四、创建视图模板(View视图模板)

1.调用View视图

    function  login() {
        echo "登录";
        $this->display(); // 展现视图(视图文件名字(login.html)要与当前操作方法名字一致)
        $this->display('register'); // 访问其它模板
        $this->display('Goods/register'); // 访问其它控制器的具体文件
    }
}

五、数据库操作Model模型

1.连接配置数据库

2.创建model模型类

原则上每个数据表,都对应一个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); // 可以用于执行原生sql语句(普通的Model对象也可以执行原生的sql语句)

2.2.2实例化父类Model对象,同时指定操作的数据表
该方式使得一个数据表即使没有对应的Model模型类,也不影响我们直接操作该表

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

六、数据库的基本操作

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);

七、表单验证

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接收附件信息

  • 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 基于角色的用户访问权限控制

    • 管理员表
    • 权限表
    • 角色表

该方式权限设置特点:

  • 用户----->角色(组)------->权限
  • 每个组可以对应多个权限,是已经准备好的工作(无需后期设置)。
  • 管理员进行权限设置只需考虑用户在哪个组即可,操作非常容易、高效、简便。
  • 是一种非常科学的权限设置模式。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容