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

目录:

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

学习自: 李炎恢

02. URL 解析模式

1. url解析

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

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

第一个是模块。模块在哪呢。
模块在 application 目录下默认有一个 index 目录,这就是一个模块。
这个文件夹index就是一个模块,目前application只有index这一个模块
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第1张图片
控制器:
而在 index 目录下有一个 controller 控制器目录的 Index.php 控制器。
注意这个Index是大写的。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第2张图片这个Index.php和里面的类是 呼应的,名字都要一样的。

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第3张图片控制器,在这里是不用区分大小写的。

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

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第4张图片
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第5张图片

在这里插入图片描述这里的传参,和平常的PHP不一样。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第6张图片

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

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第7张图片ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第8张图片

?????

这里报错了,,不应该啊,这三个都对的上的
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第9张图片
其实是命名空间的问题!
参考一下index的命名空间,那么我们自己的也应该知道了

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第10张图片
!! 对了对了
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第11张图片
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第12张图片

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第13张图片

2. url模式。

在apache中配置环境,然后 在 index.php 同级目录下的.htaccess。配置
出现了点小问题,就是去掉index.php之后显示 no input file specialed。然后解决了。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第14张图片
前面这块是可以当作域名的,后面的就是我们输入的参数了。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第15张图片

03. 模块设计:

学习要点:

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

1. 目录结构

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

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

  3. 这个是 结构列表:
    ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第16张图片
    index和test 就是 module1,module2。

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第17张图片

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

  2. 多模块设计在 URL 访问时,必须指定相应的模块名,比如:public/test/abc/eat
    但是,我们之前的是省略的呀:
    ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第18张图片
    看这里,config,下的app.php中规定了默认的模块名,默认的控制器名,

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第19张图片如果不是默认的话,就要自己写全了,

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

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

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第20张图片
.我们再是一次,发现,错了,因为我们绑定了,所以这个test是多余的。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第21张图片去掉之后,就好了。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第22张图片而且此时的index模块就访问不了了。因为我们已经绑定了模块位 test了。
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第23张图片
此时,只有一个模块test了,其他的就不好了。

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

2. 空模块

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第25张图片

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

3. 单一模块。

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第26张图片
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第27张图片
在这里插入图片描述

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

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第28张图片

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第29张图片

4. 环境变量:

ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第30张图片
Env 是一个类库::是静态方法的意思
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第31张图片
跟进Env。app_path是应用目录,也可以看看其他的
ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习_第32张图片

你可能感兴趣的:(think,PHP学习,thinkphp,开发)