ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习
Posted Zero_Adam
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP学习 --- 02 url解析 ---- 03 模块设计 ---------- 学习相关的知识,希望对你有一定的参考价值。
目录:
学习自: 李炎恢
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. 目录结构
-
ThinkPHP5.1 默认是
多模块
架构,也可以设置为单模块
操作; -
所有模块的命名空间以
app
这三个字母作为根命名空间(可通过环境变量更改); -
这个是 结构列表:
index和test 就是 module1,module2。
-
模块下的类库文件命名空间统一为:app\\模块名;
比如:app\\index\\controller\\Index。这个index是控制器, -
多模块设计在 URL 访问时,必须指定相应的模块名,比如:
public/test/abc/eat
但是,我们之前的是省略的呀:
看这里,config,下的app.php中规定了默认的模块名,默认的控制器名,
如果不是默认的话,就要自己写全了,
- 如果你只有 test 这一个模块时,你可以绑定这个模块,从而省略写法.就可以省略那个模块名了:
public/qwer/eat
。此时,URL 调用就变成了:public//eat;多模块时,则其它无法访问
在public下的index.php中加上一个 bind 来帮顶模块。
Container::get('app')->bind('test')->run()->send();
.我们再是一次,发现,错了,因为我们绑定了,所以这个test是多余的。
去掉之后,就好了。
而且此时的index模块就访问不了了。因为我们已经绑定了模块位 test了。
此时,只有一个模块test了,其他的就不好了。
- 如果你的应用特别简单,只有一个模块,一个控制器,那改写下追加的方法
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 模块设计 ---------- 学习的主要内容,如果未能解决你的问题,请参考以下文章