博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThinkPHP 入门
阅读量:6582 次
发布时间:2019-06-24

本文共 3827 字,大约阅读时间需要 12 分钟。

一、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.创建虚拟主机,访问应用(设置略)

二、路由形式

什么是路由: 答:系统从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\Controlleruse Think\Controllerclass  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对象

####### 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:

七、附件上传

涉及技术点

复制代码

$_FILES接收附件信息

  • name
  • size
  • tmp_name
  • type
  • error(0:没问题 12:大小超界限 3:只上传部分附件 4:没有上传附件)
  • move_uploaded_file(临时路径名附件,真实路径名附件)

八、添加丰富的工具类做分页处理

九、RBAC

RBAC: role base access control 基于角色的用户访问权限控制

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

该方式权限设置特点:

  • 用户----->角色(组)------->权限
  • 每个组可以对应多个权限,是已经准备好的工作(无需后期设置)。
  • 管理员进行权限设置只需考虑用户在哪个组即可,操作非常容易、高效、简便。
  • 是一种非常科学的权限设置模式。

转载地址:http://scino.baihongyu.com/

你可能感兴趣的文章
浅谈Java中的对象和引用
查看>>
SQL 注入自我总结
查看>>
Linux线程
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
一个有趣的命令
查看>>
我的友情链接
查看>>
已发布13集网站开发技术视频:http://blog.sina.com.cn/s/blog_67d27f340102vf7l.html
查看>>
Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
查看>>
MySQL数据库的优化(二)
查看>>
Deepin OS和WIN7双启动 花屏原因一例
查看>>
UIMenuController—为UITextField禁用UIMenuController功能
查看>>
Protobuf使用不当导致的程序内存上涨问题
查看>>
【原创】扯淡的Centos systemd与Docker冲突问题
查看>>
Spring+Mybatis多数据库的配置
查看>>
给大家推荐一个免费下载名称读写ntfs软件的地方
查看>>
在MySQL数据库建立多对多的数据表关系
查看>>
突然停电或死机导致没保存的文件怎么找回
查看>>
kudu
查看>>
jquery.validate.min.js表单验证使用
查看>>
在JS中捕获console.log的输出
查看>>