为什么学ThinkPhp6?
php是世界上最好的语言。thinkphp是最流行的php框架。thinkphp6版本是最新最前沿的版本。屏幕前学习的你,嗯,是最好看的.
这优势,没的说,赶紧买买买!!!哦不说错了,学它学它选它~物美价廉,大家快来学啊!!!
开始thinkphp6:
thinkphp6其实就是thinkphp5.2,6是最新的版本,很多人听过thinkphp3点几,thinkphp5.0,thinkphp5.1,很好奇为什么不见5.2呢。事实上,从5.1到5.2版本变化太大了,就换掉了小版本的迭代,直接取名新的大版本6.0。thinkphp6虽然发行没多久,但是版本迭代的也挺快的,因此未来主流肯定是6版本。
我的建议,开始学的时候,一定一定不要去看开发文档。看开发文档来学习效果事倍功半。开发文档是给有基础的人用的,是已经会开发的人用的一个手册,而对于初学者最好最快的学习方法就是看视频,推荐视频thinkphp6教程:b站教学视频(虽然这个视频不是特别好,但聊胜于无)。
安装配置:
环境及下载:
- php版本>7(集成服务phpstudy可以很方便的下载并管理不同版本的php)
- 下载管理工具composer
- 下载thinkphp6
thinkphp6的php环境支持是>7以上:我用的的服务器集成软件PHPStudy,在里面很方便的下好了php7.3,还能切换版本。
下载php管理工具composer,这个工具后面会用到,强烈要求下载。因为现在thinkphp6搞的跟python一样,就像python使用包工具pip或者easy_stall,composer工具敲命令也可以快速安装相关依赖。首先composer可以用来下最新的thinkphp6,官方也推荐这种下载。但是,thinkphp6文件也可以不用composer下载,在官网中有链接,百度云盘的那种,如果有其他问题导致composer下载tp6不成功,就使用后者方法。
- composer的安装:推荐菜鸟教程,菜鸟教程下载composer工具:除了自己的安装目录以及选择php.exe文件目录以外一直下一步就好了。然后再改一下镜像。菜鸟教程有说。
下载thinkphp6使用composer各种版本下载thinkphp教程(这个可以看开发文档),可是我下的不很成功,最后没有去纠结问题出在哪。直接改用网盘下载了,thinkphp链接网盘。
下好之后,在服务器集成工具phpstudy中新建一个网站,配置好我的apache的网站相关信息:主要是网站根目录域名绑定,我的根目录是D盘下的php_site目录,根目录在浏览器网址栏上的体现是www.cool.xiongmm.cn/ (www.cool.xiongmm.cn是我的本地域名),配置好网站信息然后开启apache的服务:再把下好的thinkphp6框架文件放在根目录下,可以改个名tp6(名字简短,便于访问)。下面是我本地配置的截图:
测试是否安装成功,thinkphp的对外部公开可以访问的目录是public,相当于我们java项目下的Java Resource资源文件夹。所以如果不另外设置,任何不包含public目录的路由都不可访问:此时我在浏览器中输入:
www.cool.xiongmm.cn/tp6/public或者
www.cool.xiongmm.cn/tp6/public/index.php/index/index(为什么这个路径也可以访问首页下面会讲到)显示如下内容,就说明tp6部署成功。
首页访问配置:
在vscode编辑器中打开tp6文件(前提是你vscode下好了插件并配置好了php环境的路径,用其他编辑器也行),看到默认下好的框架目录如下:初学我们需要重点关注的目录大致只有app、config、public三个
我们先看一下app目录:默认只有一个controller文件,且下面写了一个index.php类。在Index类的index()方法返回的信息就是我们访问默认首页显示的内容。
尝试改一下返回内容:
重新访问:
(因为我tp6已经修改了很多,不方便从头开始演示,于是又下了一个新的thinkphp6,更名为tp6_1,后面都用这个路径演示。)
说到这里就不得不说一下,为什么测试的路径两个
www.cool.xiongmm.cn/tp6_1/public或者
www.cool.xiongmm.cn/tp6_1/public/index.php/index/index都可以访问,而且路径中没有包含controller目录:
说一下首页访问路径:
1、访问
www.cool.xiongmm.cn/tp6_1/public路由,会自动调用tp6_1框架中默认应用的默认控制器(index.php)中的方法(index class中的index()方法)。所以你如果想修改默认的首页,不妨去修改这些默认设置。
2、访问http://域名/最外层文件名/public目录/过滤文件index.php/控制器名(控制器和类名一样)/方法名/方法参数名/参数值,在路径中 index.php 是必须经过的文件,这一路由有点复杂,但是他就是这样设置的,愣是想改的话也可以,不过我还没试过。。 如下示例,我们用此路径访问index控制器中的hello,并传入参数:
怎么回事呢?看不出来是哪里出错了,路径是没错的,下面我们开启debug模式来看看:
开启debug调试:
找到app同级目录文件.example.env,更名为.env,另外在文件中要加上一句:APP_DEBUG = true,保存。
(讲两点: 第一点是.env文件算是可有可无,其他配置文件首先会去尝试寻找.env文件的配置,并引入,找不到就用自己的配置信息。包括数据库配置database.php文件中,也会去寻找.env文件里面的配置信息。后面会慢慢学习到;另外一点是开启debug模式后,在后端向前端返回参数信息的时候,后面除了返回自己的 参数字符串信息 还会跟一大串的html代码,那些都是开启debug模式的自带的显示调试的信息,挺烦人的,也不知道咋办,关了吧,没调试,难排错,不关吧,获取个参数还得搞字符串分割,觉得烦可以改成app_dubug = false)
重新输入url访问:会跳出来调试信息,很直观的,告诉我们可能是路由设置的问题。
解决办法:在config目录下找到第一个app.php文件打开,将with_route的值改为false即可。
再次访问:它又可以了
此时,你在controller目录下面尝试着创建其他的类也是可以访问的,示例如下:
controller下创建user.php,并编写同名的类。里面写一个love方法,看一下请求是否可以成功:
访问一下:
http://localhost/tp6_1/public/index.php/user/love
出现上面这种情况是因为我们没有加入命名空间,命名空间是为了声明这是一个控制器,应该是不能少的,毕竟thinkphp框架是采用MVC模式,model和view可以没有,控制器没有那还是框架嘛。。。
再访问一下:
在之前的3.几版本中,类名类文件名开头都必须严格大写,这里却不用。但是为了统一,还是尽量类文件类名首字母都大写。
多应用开发:
前面一直强调默认应用,默认控制器,默认调用方法。那么控制器和方法都可以有多个,为什么应用还有默认之说,这不才一个项目吗?难道项目还可以有多个吗?答案是肯定的。
多应用与单应用的理解:
多应用:在app下还可以同时创建多个应用,这些应用相当于大项目中包含的是多个小项目。
单应用:实际上就是大项目只提供一种服务,可以理解成我们平常认为的一个peoject一个项目,刚下载好的thinkphp项目进入之后使用的单应用开发。
为什么要弄个多应用开发呢:
在一个手机app软件中,提供的服务并非单一,想要开发这样的app,可以分别在不同的服务器,不同的项目中去开发。但是这样有一点,因为各应用之间独立性高太高,若是应用之间相互要交互传递信息,不在一个服务器可能涉及跨域,哪怕是在同一服务器下的不同项目之间开发或者交互也有很多不便之处。我想这大概是设计多应用开发的初衷吧,姑且先这样理解。
默认下载好的是单应用开发,就相当于tomcat下面只放了一个java的web项目,此时,你直接在app目录下面控制器里写类和方法即可。而要想体验多应用,则需要进行另外的配置。其实我们在刚开始学的时候没什么必要学这个,不出意外的话我们大都只有一个应用。但是为了以后能深入学习,还是要了解一下的。
如果需要开发多个app,分四步走:
1、新建应用目录
在app目录下建立自己的a应用目录,然后把controller目录删掉,或者移到自己创建的应用目录下面,这个很重要,不然会报错说找不到控制器。
2、多应用配置的扩展安装
想要使用多应用是要开启多应用的,先查看有无自动开启多应用的配置项,打开config——app.php文件,刚开始我这里是没有'auto_multi_app' => true 这项配置的,这个配置是开启多应用开发关键。
要先去安装 多应用的扩展。添加tp6的扩展 ,使用composer工具即可,在tp6目录下进入cmd命令行执行下列命令;
composer require topthink/think-multi-app
扩展安装成功之后,把配置项写入并保存: 'auto_multi_app' => true, (逗号不能忘了)
3、修改命名空间
在控制器类中,命名空间要改成 :
app/yourappname/crotroller,且url访问路径在过滤文件index.php后面要加入自己的应用名!!!!
示例:
然后就可以进行多应用同时开发了。
默认访问应用设置:
整个大项目可包含有多个应用,一旦应用多了,难免纠结哪个应用来处理首页请求。默认访问项目的应用是Index,此时若是看index不顺眼可把他删了(不删也可)。然后修改默认应用为其他的应用。
找到config下面的app.php文件,默认的访问应用是index,我改成了shopapp。
然后把controller目录删了,app下创建一个shopapp文件,shopapp文件下创建controller文件(controller不能少,它告诉框架找控制器应到这儿来),controller下创建index.php文件,index.php中编写index类(index类是本应用默认访问的控制器),并写一个方法index()(默认访问方法)。此时,这个应用的默认访问路径就畅通了,如下图:
保存,访问一下:
初试配置先讲这些。