ThinkPHP3.2.3学习

来源:互联网 发布:薛之谦淘宝店铺号 编辑:程序博客网 时间:2024/05/19 21:41


前天工作室说要使用ThinkPHP,学了一下3.2.3版本之后,又说要用5.0版本,所以接下来不会更3.2.3了,应该会更ThinkPHP5.0版本的学习博客。至于下面的这些,有需要的同学可以借鉴一下,都只是一些基础,有做了实验的。

ThinkPHP3.2.3学习

1、部署(重点)

第一步:创建站点目录

第二步:配置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文件夹下的目录结构

 

 

2.细节问题

5.1、自动生成

在首次运行index.php入口文件的时候回产生对应的目录结构,目录的名字取决于在index.php中定义的常量APP_PATH。

 

5.2、目录安全文件

在自动生成的文件夹中都有一个空白的html文件,文件名叫index.html,这个文件称为目录安全文件。

在Apache配置文件中有options+indexes,默认展示站点目录。如果在站点目录中不存在index开头的文件则会展示目录结构,但是有了index.html之后就不会展示结构。

实验:将index.html文件更名或者修改

可以通过url访问显示文件目录

 

将index.html文件改回去,不显示文件目录结构

 

 

 

5.3、默认访问

在部署之后访问会看到一个笑脸,笑脸是怎么输出的?

从MVC入手,查看View以及Model文件夹下,都是只有一个空的index.html。

而Controller文件夹下,有一个php文件,点击打开

打开文件后可以看到以下内容

 

从以上步骤可以得出:

默认分组/平台/模块:Home

默认控制器:Index

默认方法:index

上述的默认值,可以在系统配置文件中找到:应用目录下ThinkPHP\Conf\convention.php

2.ThinkPHP中控制器

1.控制器创建

命名规则:控制名+Controller+.class.php

 

示例:UserController.class.phpUser为控制名,Controller为关键词)

 

注意:用英文!用英文!用英文!

首字母大写!首字母大写!首字母大写!

2.控制器代码结构

可以参考默认给我们的IndexController.class.php

 

总结步骤:

                  第一步:声明当前控制器的命名空间

                   第二步:引入父类控制器

                   第三步:声明控制器类以及继承父类控制器

 

示例:(顺便写了一个测试函数test() )

 

浏览器访问:http://0813.com/index.php?m=Home&c=User&a=test

m module的意思,分组名

c controller的意思,控制器名

a action的意思,方法名

 

效果如下

 

 

 

3.路由形式(重点)

路由是指访问项目中具体某个方法的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模式。

4.分组

一般的项目会根据功能的使用对象来区分代码,比如使用对象都是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--------------------------------------------------------

5.控制器跳转

5.1 URL组装

  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

 

输出如下: