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

本节目标

   定义登录和用户展示模块的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开发入门指南简介

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容