ThinkPHP 8高效构建Web应用-控制器

embedded/2025/1/7 15:41:55/

【图书介绍】《PHP.html" title=ThinkPHP>ThinkPHP 8高效构建Web应用》-CSDN博客

《2025新书 PHP.html" title=ThinkPHP>ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 PHP.html" title=ThinkPHP>ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书

使用VS Code开发PHP.html" title=ThinkPHP>ThinkPHP项目-CSDN博客

控制器无须特殊定义,通常存放在app/controller目录下,文件名采用驼峰命名,不强制要求继承任何内置基础类,非常灵活。但是在实际应用开发中,笔者建议还是根据接口职责来划分控制器。

【示例6-1】

新建app/controller/User.php文件,代码如下:

<?php
// app/controller/User.php
namespace app\controller;class User 
{public function login(){return 'login';}
}

在上面的示例中定义了一个User控制器,当用户访问http://localhost:8000/user/login或者http://localhost:8000/index.php/user/login时,就会执行User控制器中的login方法后返回login字符串。

1. 控制器后缀名

在某些场景下,控制器名称可能和模型名称冲突,比如已经有一个User的模型类,而控制器名称也为User,那么就会产生冲突,此时我们可以打开config目录下route.php中的控制器名称后缀开关。

'controller_suffix'     => true,

启用控制器后缀后,控制器名称后面就会带有Controller后缀,例如上面的用户控制器中的User就可以修改为UserController。

【示例6-2】

新建app/controller/UserController.php文件,代码如下:

<?php
namespace app\controller;class UserController 
{public function login(){return 'login';}
}

在浏览器中访问http://localhost:8000/user/login,输出login字符串。测试完这个示例后,需要将route.php中的控制器名称后缀开关controller_suffix重新设置为false,恢复原来的配置。

2. 嵌套控制器

控制器支持嵌套,我们可以根据业务需求,在app/controller目录下创建包含子目录的控制器。下面列举查看用户订单的示例。

【示例6-3】

新建app/controller/user/Order.php文件,代码如下:

<?php
namespace app\controller;class Order
{public function list(){return 'list';}
}

在浏览器中访问http://localhost:8000/user.order/list时,就会执行Order控制器的list方法,输出list字符串。通过多级控制器可以更灵活地支持代码划分和更优雅的URL。

3. 控制器基类

PHP.html" title=ThinkPHP>ThinkPHP 8内置了一个控制器基类,提供了许多基础上下文变量,比如App实例和当前Request实例。下面列举一个读取应用时区配置和当前请求URL的示例。

【示例6-4】

新建app/controller/Index.php文件,代码如下:

<?php
// 控制器
namespace app\controller;use app\BaseController;class Index extends BaseController
{public function index(){$host = $this->app->config->get('app.default_timezone');$url = $this->request->url();return json(['host' => $host, 'url' => $url]);}
}

在浏览器中访问http://localhost:8000,输出结果如下:

{
"host": "Asia/Shanghai",
"url": "/"
}

读者把环境一搭,很容易学会PHP.html" title=ThinkPHP>ThinkPHP8控制器的使用。


http://www.ppmy.cn/embedded/151657.html

相关文章

内部类 --- (寄生的哲学)

内部类总共有 4 种&#xff08;静态内部类、非静态内部类、局部内部类、匿名内部类&#xff09; 作用&#xff1a; 一&#xff1a;内部类提供了更好的封装&#xff0c;可以把内部类隐藏在外部类之内&#xff0c;不允许同一个包中的其他类访问该类。 二&#xff1a;内部类可以…

OpenCV 图像处理之形态学转换

摘要: 形态学转换是图像处理中的重要技术,它基于图像的形状特征进行操作,能够有效地对图像进行增强、去噪、分割等处理。本文详细介绍了 OpenCV 中形态学转换的多种方法,包括侵蚀、扩张、开运算、闭运算、形态学梯度、顶帽和黑帽,并通过 Python 代码实现这些方法,深入探讨…

RabbitMQ概述

目录 RabbitMQ概述 前言 MQ MQ的作用 为什么选择RabbitMQ RabbitMQ的介绍 RabbitMQ概述 前言 Rabbit, 兔⼦的意思 互联⽹⾏业很多公司, 都喜欢⽤动物命名产品, 或者作为公司的logo, 吉祥物. ⽐如: 腾讯的企鹅, 京东的狗, 美团的袋⿏, 携程的海豚,阿⾥就更多了, 蚂蚁, ⻜…

python实现,outlook每接收一封邮件运行检查逻辑,然后发送一封邮件给指定邮箱

以下是一个使用 Python 和 win32com.client 模块实现的示例代码&#xff0c;每当 Outlook 接收到一封新邮件时&#xff0c;执行检查逻辑并发送一封邮件到指定邮箱。这个代码依赖于 Windows 系统和安装了 Microsoft Outlook。 环境准备 确保安装了 pywin32 库&#xff1a;pip …

文件I/O - 文件读写操作

引言 文件输入输出&#xff08;I/O&#xff09;是编程中非常常见的任务&#xff0c;尤其是在处理大量数据或需要持久化存储时。C 提供了多种方式来进行文件的读写操作&#xff0c;包括使用标准库中的 fstream、ifstream 和 ofstream 类。本文将详细介绍如何在 C 中进行文件的读…

Docker 容器技术与 K8s

Docker 是一种开源平台&#xff0c;使开发者可以轻松构建、管理并运行容器化应用&#xff0c;而 Kubernetes 则是一个强大的容器编排工具&#xff0c;可以高效地管理和扩展这些容器化应用。这技术组合&#xff0c;简直就像一对婚配的技术伴侣&#xff0c;为我们自动化测试、持续…

机器学习中的欠拟合

当模型不能够准确地表达输入与输出的关系时&#xff0c;就是欠拟合。它在训练集和未见过的数据都会产生高误差率。过度拟合则在训练集表现出低误差率&#xff0c;只有对未见过的数据表现出高误差率。 当模型太过于简单时&#xff0c;它需要更多的训练时间、更多的输入特征、更…

.NET Core + Kafka 开发指南

什么是Kafka Apache Kafka是一个分布式流处理平台,由LinkedIn开发并开源,后来成为Apache软件基金会的顶级项目。Kafka主要用于构建实时数据管道和流式应用程序。 Kafka 架构 从下面3张架构图中可以看出Kafka Server 实际扮演的是Broker的角色, 一个Kafka Cluster由多个Bro…