第一步:创建站点目录
第二步:配置Apache虚拟主机的配置文件,创建一个虚拟主机
文件位于Apache目录下conf/extra/httpd-vhosts.conf
第三步:重启Apache
第四步:修改hosts文件,将配置文件中声明的2个域名做下绑定(解析)
Hosts文件在C盘下windows/System32/drivers/etc/
可以在cmd中通过ping命令测试域名是否绑定成功
在网站上访问该配置的地址时,若出现以下Access forbidden! Error 403错误
解决方法:在虚拟主机配置中加上Requir all granted 后,重启Apache服务器。
可以看到index入口就可以了
效果图如下:
第五步:复制ThinkPHP框架下的index.php和ThinkPHP文件夹到站点目录
再次访问0813.com,可以看到一个欢迎页面
在首次运行应用时,会在站点文件中自动生成一个Application文件,名称由index.php中指定,再次运行不再自动生成。
Application文件夹的目录结构
Home文件夹下的目录结构
在首次运行index.php入口文件的时候回产生对应的目录结构,目录的名字取决于在index.php中定义的常量APP_PATH。
在自动生成的文件夹中都有一个空白的html文件,文件名叫index.html,这个文件称为目录安全文件。
在Apache配置文件中有options+indexes,默认展示站点目录。如果在站点目录中不存在index开头的文件则会展示目录结构,但是有了index.html之后就不会展示结构。
实验:将index.html文件更名或者修改
可以通过url访问显示文件目录
将index.html文件改回去,不显示文件目录结构
在部署之后访问会看到一个笑脸,笑脸是怎么输出的?
从MVC入手,查看View以及Model文件夹下,都是只有一个空的index.html。
而Controller文件夹下,有一个php文件,点击打开
打开文件后可以看到以下内容
从以上步骤可以得出:
默认分组/平台/模块:Home
默认控制器:Index
默认方法:index
上述的默认值,可以在系统配置文件中找到:应用目录下ThinkPHP\Conf\convention.php
命名规则:控制名+Controller+.class.php
示例:UserController.class.php(User为控制名,Controller为关键词)
注意:用英文!用英文!用英文!
首字母大写!首字母大写!首字母大写!
可以参考默认给我们的IndexController.class.php
总结步骤:
第一步:声明当前控制器的命名空间
第二步:引入父类控制器
第三步:声明控制器类以及继承父类控制器
示例:(顺便写了一个测试函数test() )
浏览器访问:http://0813.com/index.php?m=Home&c=User&a=test
m 是module的意思,分组名
c 是controller的意思,控制器名
a 是action的意思,方法名
效果如下
路由是指访问项目中具体某个方法的URL地址。
系统提供的四种路由形式:
1、 普通形式路由(get形式路由)
路由形式:http://域名//入口文件?m=分组名&c=控制器名&a=方法名&参数名=参数值
示例:http://0813.com/index.php?m=Home&c=User&a=test&id=1,访问Home分组下的User控制器中的test方法,参数id=1
2、 pathinfo路由(tp框架默认路由形式)
路由形式:http://域名//入口文件/分组名/控制器名/方法名/参数名1/参数值1/参数名2/参数值2
示例:http://0813.com/index.php/Home/User/test/id/1,访问Home分组下的User控制器中的test方法,参数id=1
3、 rewrite路由(麻烦,不推荐,需要配置文件,且对服务器的兼容性不好,想要了解的同学自行百度)
4、 兼容路由
结合了普通路由和pathinfo路由,
路由形式:http://域名//入口文件?s=分组名/控制器名/方法名/参数名/参数值
示例:http://0813.com/index.php/?s=Home/User/test/id/1,访问Home分组下的User控制器中的test方法,参数id=1。注意,这种路由的参数只有一个s。
5、 ThinkPHP中路由形式的配置
应用目录下的ThinkPHP\Conf\convention.php
这个设置不影响访问的方式,即使设置了'URL_MODEL' => 1,仍可以使用兼容模式或者普通模式进行访问。设置该变量影响的是ThinkPHP系统封装的URL组装函数(U函数)的生成的url地址的形式。如果设置的是pathinfo路由,则生成的url地址也是pathinfo模式。
一般的项目会根据功能的使用对象来区分代码,比如使用对象都是user的功能放到一个User目录下,使用对象都是Admin的功能放到一个Admin目录下。这样的文件夹就是分组,分组就是我们通常所指的平台。
刚部署好的ThinkPHP系统中的Home目录就是一个分组。后期如果需要更多的分组,可以自己新建分组,格式可以仿照Home分组。
新建分组步骤:1. 在与Home目录同级目录下新建一个文件夹(例如叫Admin)。
2. 将Home目录下除了Controller文件夹之外的全部文件复制到Admin中。3. 进入到Admin目录中,新建一个Controller文件夹,将Home\Controller下的index.xml和IndexController.class.php复制到Admin\Controller中,并修改IndexController.class.php中的命名空间。
注意:不同分组下命名空间不要搞错
如果你的Home分组中和ThinkPHP原来的相比没有什么改动,也可以直接复制Home目录到同级目录下,改名且修改Controller目录下的对应控制器的命名空间。
------------------------------------0814--------------------------------------------------------
URL组装是根据某个规则组成一个URL地址,这个功能叫做组装。
在ThinkPHP中,系统提供了一些封装的快速函数来处理URL的组装,例如U方法。
其它的快速方法有:A、B、C、D、E、F、G、I、M、R、S,这些方法都定义在系统的函数库文件中(function.php)
图示:function.php中的U方法
这里介绍U方法,U方法格式:U(’URL路径’ [,参数数组])
例如,要使用U方法组装出当前控制器下index方法的地址,则使用U(‘index’)
浏览器访问:http://0813.com/index.php/Admin/Test/test1
输出如下:
或者,使用U方法组装出另一个控制器Index下的index的地址,则使用U(‘Index/index’)
浏览器访问:http://0813.com/index.php/Admin/Test/test2
输出如下:
再或者,要给指定页面添加参数,例如给Index控制器下的index方法传递一个参数id1=100以及参数id2=200,则使用U(‘Index/index’,array(‘id1’=>100,’id2’=>200))
浏览器访问:http://0813.com/index.php/Admin/Test/test3
输出如下: