ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习

2023-10-19 08:50

本文主要是介绍ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:

  • 02. URL 解析模式
    • 1. url解析
      • 基本样式:**http://serverName/index.php/模块/控制器/操作/参数/值…;**
        • 这里我们自己创建一个模块看看。
    • 2. url模式。
  • 03. 模块设计:
    • 1. 目录结构
    • 2. 空模块
    • 3. 单一模块。
    • 4. 环境变量:

学习自: 李炎恢

02. URL 解析模式

进入项目的目录,然后php think run。就行了

在这里插入图片描述

1. url解析

基本样式:http://serverName/index.php/模块/控制器/操作/参数/值…;

index.php 为入口文件,在 public 目录内的 index.php 文件
然后,

第一个是模块。模块在哪呢。
模块在 application 目录下默认有一个 index 目录,这就是一个模块。
这个文件夹index就是一个模块,目前application只有index这一个模块
在这里插入图片描述
控制器:
而在 index 目录下有一个 controller 控制器目录的 Index.php 控制器。
注意这个Index是大写的。
在这里插入图片描述这个Index.php和里面的类是 呼应的,名字都要一样的。

在这里插入图片描述控制器,在这里是不用区分大小写的。

控制器完了之后,下面是操作。
控制器中的两个方法都叫操作。比如,hello或者 hello

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述这里的传参,和平常的PHP不一样。
在这里插入图片描述

这里我们自己创建一个模块看看。

在这里插入图片描述在这里插入图片描述

?????

这里报错了,,不应该啊,这三个都对的上的
在这里插入图片描述
其实是命名空间的问题!
参考一下index的命名空间,那么我们自己的也应该知道了

在这里插入图片描述
!! 对了对了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. url模式。

在apache中配置环境,然后 在 index.php 同级目录下的.htaccess。配置
出现了点小问题,就是去掉index.php之后显示 no input file specialed。然后解决了。
在这里插入图片描述
前面这块是可以当作域名的,后面的就是我们输入的参数了。
在这里插入图片描述

03. 模块设计:

学习要点:

  1. 目录结构
  2. 空模块
  3. 单一模块
  4. 环境变量

1. 目录结构

  1. ThinkPHP5.1 默认是多模块架构,也可以设置为单模块操作;

  2. 所有模块的命名空间以app 这三个字母作为根命名空间(可通过环境变量更改);

  3. 这个是 结构列表:
    在这里插入图片描述
    index和test 就是 module1,module2。

在这里插入图片描述

  1. 模块下的类库文件命名空间统一为:app\模块名;
    比如:app\index\controller\Index。这个index是控制器,

  2. 多模块设计在 URL 访问时,必须指定相应的模块名,比如:public/test/abc/eat
    但是,我们之前的是省略的呀:
    在这里插入图片描述
    看这里,config,下的app.php中规定了默认的模块名,默认的控制器名,

在这里插入图片描述如果不是默认的话,就要自己写全了,

  1. 如果你只有 test 这一个模块时,你可以绑定这个模块,从而省略写法.就可以省略那个模块名了:public/qwer/eat。此时,URL 调用就变成了:public//eat;多模块时,则其它无法访问

在public下的index.php中加上一个 bind 来帮顶模块。
Container::get('app')->bind('test')->run()->send();

在这里插入图片描述
.我们再是一次,发现,错了,因为我们绑定了,所以这个test是多余的。
在这里插入图片描述去掉之后,就好了。
在这里插入图片描述而且此时的index模块就访问不了了。因为我们已经绑定了模块位 test了。
在这里插入图片描述
此时,只有一个模块test了,其他的就不好了。

  1. 如果你的应用特别简单,只有一个模块,一个控制器,那改写下追加的方法
    Container::get('app')->bind('test/qwer')->run()->send();
    只有一个控制器,也就是。我的test模块下面只有 qwer这一个 php 文件了。
    在这里插入图片描述
    这时候,模块名,test,控制器,qwer,就都可以省略了。
    在这里插入图片描述
    这样的情况 少得很,,

2. 空模块

在这里插入图片描述

打开config的app.php。找。
在这里插入图片描述
我们现在又两个模块,一个是 index,一个是test。如果我们这个时候,访问一个 不存在的模块的时候,就会自动指向,我们规定的这个默认模块.
我们可以做一个404模块,直接指向404就可。

3. 单一模块。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们只有一个模块的话,就不用像上面的一样,还要绑定 模块,
其他的都删除了。

在这里插入图片描述

在这里插入图片描述

4. 环境变量:

在这里插入图片描述
Env 是一个类库::是静态方法的意思
在这里插入图片描述
跟进Env。app_path是应用目录,也可以看看其他的
在这里插入图片描述

这篇关于ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238737

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python中的sort()和sorted()用法示例解析

《Python中的sort()和sorted()用法示例解析》本文给大家介绍Python中list.sort()和sorted()的使用区别,详细介绍其参数功能及Timsort排序算法特性,涵盖自适应... 目录一、list.sort()参数说明常用内置函数基本用法示例自定义函数示例lambda表达式示例o

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录