美文网首页
php学习路(六)-- Tp项目web应用控制层定义+自定义工具

php学习路(六)-- Tp项目web应用控制层定义+自定义工具

作者: 爱编程的凯哥 | 来源:发表于2019-01-01 17:07 被阅读66次

    本节目标

       定义登录和用户展示模块的controller层代码结构,实现http请求传参访问以及基本的工具类定义

    代码结构

    image.png
    • Home目录下作为登录的入口
    • User模块下作为用户信息管理的入口
    • Common是作为通用模块

    User模块下暂时只有Controller一层,先来测一下多模块的controller结构。


    管理控制层

    最初代码如下

    <?php
    /**
     * Created by PhpStorm.
     * User: kai.yang
     * Date: 2019-01-01
     * Time: 14:16
     */
    
    namespace User\Controller;
    
    
    use Think\Controller;
    
    class AdminController extends Controller
    {
    
        public function  printArray($array){
            print_r($array);
    
        }
    
    
        public function query(){
            $nowTime=date('Y-m-d H:m:s',time());
            //通过I函数获取get获取post参数,get.表示只获取get参数,post表示只获取post参数,不写代表通用,后面的'kai'代表默认值
            $name = I('get.name', '');
            $startTime = I('get.startTime', '2015-01-01 00:00:00');
            $endTime= I('get.endTime', $nowTime);
            $model=M("users u");
            $map=array();
            $map["CREATE_TIME"]=array('egt',$startTime);
            $map["CREATE_TIME"]=array('elt',$endTime);
    
            //判断获取到name参数是否为空,为空时,不传入此参数
            if($name){
                $map['name']=array('like',"%".$name."%");
            }
    
            //users表和password表关联查询,根据名称和时间获取数据,查出最多2条,按时间倒序
            $result=$model->field("u.name,p.pass")->join("left join password p on  u.id=p.user_id")
                ->where($map)->order('u.Create_time desc')->limit(2)->select();
            print_r($result);
    
        }
    }
    

    页面访问

    image.png
    如此可以看到数据根据我们的条件进行查询,并且此时我们再回过头来看下在tp中定义的controller,对应User目录下的AdminController我们的访问url时间是
    http://local.p2.cn/User/Admin/query?name=dd
    对于Home目录下我们定义登录相关内容,创建目录Login,定义AdminController.class.php类,作为登录逻辑处理类,因为,我们自己加了一层Login目录,所以需要定控制器的层级为2,否则会访问不到,我们在Home目录下Conf的config.php中添加配置
    <?php
    return array(
      #标注此模块的控制器为两层目录
        'CONTROLLER_LEVEL'      =>  2,
    );
    

    另外数据库配置,被我们移到了最外层Common下的Conf中表示所有模块共用
    然后我们定义Login的控制器初版代码

    <?php
    /**
     * Created by PhpStorm.
     * User: kai.yang
     * Date: 2019-01-01
     * Time: 15:26
     */
    
    namespace Home\Controller\Login;
    
    use Utils\LoginUtils;
    use Think\Controller;
    
    class AdminController extends Controller
    {
        public function login(){
            $loginName=I("get.loginName");
            $password=I("get.password");
            if(!$loginName){
                echo "登录名为空";
                exit(0);
            }
    
            if(!$password){
                echo "密码为空";
                exit(0);
    
            }
    
            $checkLogin=new LoginUtils();
    
            $result= $checkLogin->checkLogin($loginName,$password);
            echo "登录结果".$result;
        }
    
    }
    

    这里我们定义了一个LoginUtils类用作登录的验证逻辑工具类,我们看看是怎么实现的

    • 在Application目录下定义了Utils包,用来存放所有工具类
    • 在Common/Conf/config.php中定义AUTOLOAD_NAMESPACE自动加载此目录下的类
    <?php
    return array(
        'AUTOLOAD_NAMESPACE' => array(
            'Utils' => APP_PATH.'Utils',
        )
    );
    
    • 在Utils定义工具类
    <?php
    /**
     * Created by PhpStorm.
     * User: kai.yang
     * Date: 2019-01-01
     * Time: 16:51
     */
    
    namespace Utils;
    
    
    class LoginUtils
    {
        public function checkLogin($loginName,$password){
            echo "检测".$loginName."是否正确<br/>";
            if($loginName="kai"){
                return "success";
            }else{
                return "false";
            }
        }
    }
    
    • 在controller引用此类
    use Utils\LoginUtils;
    
    class AdminController extends Controller
    {
        public function login(){
           .......
            $checkLogin=new LoginUtils();
            $result= $checkLogin->checkLogin($loginName,$password);
          .....
        }
    
    }
    

    这样就实现了自定义工具类的需求。

    好了,本节定义了基本的controller类的相关使用,下一节再把对应页面需求加进来就齐活了。

    目录:php学习路-- Thinkphp开发入门指南简介

    相关文章

      网友评论

          本文标题:php学习路(六)-- Tp项目web应用控制层定义+自定义工具

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