php号称世界上最好的语言。thinkphp是最流行的php框架。thinkphp6版本是最新最前沿的版本。屏幕前学习的你,又是最靓的仔
凭啥不学他
引言:thinkphp6其实就是thinkphp5.2,6是最新的版本,很多人听过thinkphp3点几,thinkphp5.0,thinkphp5.1,很好奇为什么不见5.2呢。事实上,从5.1到5.2版本变化太大了,就换掉了小版本的迭代,直接取名新的大版本6.0。thinkphp6虽然发行没多久,但是版本迭代的也挺快的,因此未来主流肯定是6版本。
我的建议,开始学的时候,一定一定不要去看开发文档。看开发文档来学习效果事倍功半。开发文档是给有基础的人用的,是已经会开发的人用的一个手册,而对于初学者最好最快的学习方法就是看视频,我就是事倍功半的在学,服了。。。(没搜到正儿八经的版本6的入门视频)
环境及下载:
thinkphp6的php环境支持是>7以上:我用的的服务器集成软件PHPStudy,在里面很方便的下好了php7.3,还能切换版本。
下载php管理工具composer,这个工具不可没有,他就像学习python开发的包管理工具pip或者easy install一样。composer可以用来下最新的thinkphp6,官方也推荐这种下载。但是,thinkphp6文件也可以不用composer下载,在官网中有链接,百度云盘的那种,如果有其他问题导致composer下载tp6不成功,就使用后者方法。
下载thinkphp6使用composer各种版本下载thinkphp教程(这个可以看开发文档),可是我下的不很成功,最后没有去纠结问题出在哪。直接改用网盘下载了,thinkphp链接网盘。
下好之后,在服务器集成工具phpstudy中新建一个网站,配置好我的apache的网站信息,并开启服务:把thinkphp6文件放在根目录下,可以改个名tp6(名字简短,便于访问)。
测试是否安装成功,thinkphp的对外部公开可以访问的目录是public,相当于我们java项目下的Jva 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())。所以你如果想修改默认的首页,不妨去修改这些默认设置。
2、访问http://域名/最外层文件名/public目录/过滤文件index.php/控制器名(控制器和类名一样)/方法名/方法参数名/参数值,在路径中 index.php 是必须经过的文件。如下示例,我们访问index控制器中的hello,并传入参数:
出问题了,看不出来是哪里出错了,但是路径是没错的,下面我们开启debug模式来看看(tp自带的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,分四步走:
在app目录下建立自己的a应用目录,然后把controller目录删掉,或者移到自己创建的应用目录下面,这个很重要,不然会报错说找不到控制器。
想要使用多应用是要开启多应用的,先查看有无自动开启多应用的配置项,打开config——app.php文件,刚开始我这里是没有’auto_multi_app’ => true 这项配置的,这个配置是开启多应用开发关键。
要先去安装 多应用的扩展。添加tp6的扩展 ,使用composer工具即可,在tp6目录下进入cmd命令行执行下列命令;
composer require topthink/think-multi-app
扩展安装成功之后,把配置项写入并保存: ‘auto_multi_app’ => true, (逗号不能忘了)
在控制器类中,命名空间要改成 : app/yourappname/crotroller,且url访问路径在过滤文件index.php后面要加入自己的应用名!!!!
然后就可以进行多应用同时开发了。
thinkphp6是支持多应用开发的,输入url浏览路径到public目录,默认访问的应用是Index。若是更改默认访问应用可以
找到config下面的app.php文件,默认的访问应用是index,我改成了shopapp。
然后把controller目录删了,app下创建一个shopapp文件,shopapp文件下创建controller文件(controller不能少,它告诉框架找控制器应到这儿来),controller下创建index.php文件,index.php中编写index类(index类是本应用默认访问的控制器),并写一个方法index()(默认访问方法)。此时,这个应用的默认访问路径就畅通了,如下图:
保存,访问一下: