美文网首页
ThinkPHP-入门

ThinkPHP-入门

作者: ISwiftUI | 来源:发表于2017-02-07 11:50 被阅读453次

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

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

    该方式权限设置特点:

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

    相关文章

      网友评论

          本文标题:ThinkPHP-入门

          本文链接:https://www.haomeiwen.com/subject/cpkpittx.html