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

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现