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

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步