02 控制器《ThinkPHP6 入门到电商实战》

举报
1_bit 发表于 2022/08/04 23:07:29 2022/08/04
【摘要】 文章目录(更新中…) 01 thinkphp6的前期开发准备《ThinkPHP6 入门到电商实战》 02 控制器《ThinkPHP6 入门到电商实战》 03 数据库查询、模型查询、多库查询《ThinkP...

文章目录(更新中…)

01 thinkphp6的前期开发准备《ThinkPHP6 入门到电商实战》
02 控制器《ThinkPHP6 入门到电商实战》
03 数据库查询、模型查询、多库查询《ThinkPHP6 入门到电商实战》

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。

一、路由及控制器

在这里不考虑多应用下访问,先讲解单应用下的访问方式。单应用的访问方式如下:

http://serverName/index.php(或者其它入口文件)/控制器/操作/参数/值…

  • 其中 serverName 表示域名
  • index.php 是入口文件(可隐藏)
  • 控制器可以简单理解为是对模板进行逻辑控制动作的控制
  • 操作指在控制器中的不同的方法 参数是指操作方法中克传递的参数

二、控制器

此时我们新建一个php文件,命名为 hello,这个文件我们当做一个控制器,这个控制器我们得放入 controller 目录之下:
在这里插入图片描述
这个类我们需要遵循规范,首字母大写,接着在类中编写如下代码:

<?php
namespace app\controller;
use app\BaseController;
class Test extends BaseController
{

    
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

该代码中 namespace app\controller; 定义了命名空间,use app\BaseController; 表示将控制器基类引入,因为在tp框架中,基类中已经写好了对应的方法属性,我们直接继承即可使用 tp 框架对应的特性(例如:返回实际路径 return $this->app->getBasePath(); 或 返回当前方法名 return $this->request->action();),随后创建一个类为 Test 并且继承自这个基类,此时命名这个类为 Test 与文件名一致也是遵循了规范。

接着咱们在这个类中创建一个方法,命名为 hello:

<?php
namespace app\controller;
use app\BaseController;
class Test extends BaseController
{
    public function hello(){
        return 'hello 1_bit...';
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

此时就写好了一个简单的控制器了,那么在之后的使用中咱们就可以通过 url 访问这个控制器。

controller 目录可以修改,需要在 config 目录下的 route.php 文件中找到 controller_layer进行目录修改:
在这里插入图片描述

三、控制器访问

在以上说明中,我们已经得到了 url 的方法:

http://serverName/index.php(或者其它入口文件)/控制器/操作/参数/值…

那么此时就可以访问这个控制器中的 hello 方法,那么通过第一个小点中的说明,那么此时访问 url 如:http://localhost/index.php/test/hello

此时的页面结果如下:
在这里插入图片描述
接着我们还可以给与这个 hello 方法参数,例如:

<?php
namespace app\controller;
use app\BaseController;
class Test extends BaseController
{
    public function hello($name='',$say=''){
        return 'hello'.$name.' '.$say;
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

此时 url 就可以写成:http://localhost/index.php/test/hello/name/1_bit/say/how are you?

此时页面结果如下:
在这里插入图片描述

在这里要注意,在一个控制器下,index 方法是默认方法,当访问控制器且未指定对应操作时,所访问的方法是 index 方法。

四、省略 index.php

index.php 是一个入口文件,是默认的,咱们可以通过设置对其进行隐藏,隐藏的方法在此只介绍 win 下 phpstudy 中的方法,若是其他系统可自行搜索找到解决办法。

首先打开下图中所指示的文件:
在这里插入图片描述

接下来可以看到当前文件内容如下:
在这里插入图片描述
接着在 location 中添加如下方法:

if (!-e $request_filename) {
    rewrite ^/(.*)$ /index.php/$1 last;
}

  
 
  • 1
  • 2
  • 3

在这里插入图片描述
随后保存后重启环境,一定要重启环境,接着去掉 index.php 后进行访问,依旧没有问题:
在这里插入图片描述

五、控制器中对数组值的返回

在做接口服务时,很多时候回使用数组作为返回值,那么数组如何返回成 json呢?

在 tp6 中返回json 很简单,直接使用 json 进行返回即可,例如:

public function hello($name='',$say=''){
   $res=array('name'=>'张三','height'=>'170');
   return json($res);
}

  
 
  • 1
  • 2
  • 3
  • 4

此时页面结果如下:
在这里插入图片描述
若你直接 return 这个数组将会报错:
在这里插入图片描述

在这里插入图片描述

文章来源: i1bit.blog.csdn.net,作者:1_bit,版权归原作者所有,如需转载,请联系作者。

原文链接:i1bit.blog.csdn.net/article/details/126151970

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。