阅读时长:10分钟php
技术预备:PHP基础语法html
本章咱们主要讲解ThinkPHP的基础概况和Web服务端开发中经常使用的MVC结构。前端
还记得咱们上一章是怎么输出Helloworld的吗?程序员
没错,就是在浏览器中输入了 http://localhost/tp5_demo/public/编程
这个URL表示了访问htdocs文件夹下的/tp5_demo/public/index.php文件,这是为何呢,咱们下面来一步步分解。后端
当咱们输入 http://localhost 的时候,Apache就会访问其httpd.conf文件下指定的DocumentRoot路径,在赵童鞋这里就是E:/xampp7/htdocs。浏览器
而在后面拼接/tp5_demo/public的意思就是访问DocumentRoot路径下的/tp5_demo/public文件夹。前端框架
那么最终为何会定位到index.php文件呢?这是由于httpd.conf文件里有另外一个属性定义DirectoryIndex,这个属性中就定义了index.php、index.html等文件做为入口文件。(啥?你说为啥没图?本身翻大家的httpd.conf文件去)
架构
而在ThinkPHP中,若是没有指定访问地址,默认就会路由到index模块下的Index控制器中的index()方法。框架
也就是说,输入
http://localhost/tp5_demo/public/
http://localhost/tp5_demo/public/index/index/index
是一样的效果。
在MVC架构中,控制器通常只负责以下功能:
在ThinkPHP框架中创建控制器只须要在对应的模块中的controller模块中新建一个类。
如上图则表示在index模块中创建了Index控制器。
而Index控制器下的index()方法即表明一个Action,在API开发中也就是一个接口,能够经过配置框架的路由URL进行绑定。
须要注意的是,Action中其实不该该出现太多的逻辑操做,Action应该只是做为模型层(Model)和视图层(View)的一个调用者,实际的逻辑操做应该是放到模型层去进行处理,更复杂的逻辑应该放在服务层(Service)去进行处理,这种分层的思想就是所谓的面向切面编程(AOP)。
这样作的好处就是当某个通用操做(如用户登陆、计算活动金额)
发生变化的时候,只须要在模型中修改代码,并不会影响到调用模型的控制器代码。
而若是把逻辑都放在控制器中,那么一旦须要修改代码的时候,就要把全部关联到的控制器代码所有修改一遍。
赵童鞋就见过把全部逻辑放在控制器,彻底不用模型的项目,写的时候不须要考虑分层,不须要考虑迭代,爽得很。
可是当需求发生变动的时候,维护的程序员就只想XXOO了。。
模型定义通常为一个模型类对应一个数据表。
服务端开发中大部分的逻辑操做其实就是在Select/Create/Update/Delete各类数据表。
一些简单的逻辑操做,如:获取ID为75的文章数据。应该放在模型中封装为一个方法,在控制器层去进行调用。
ThinkPHP框架为模型提供了许多便捷功能,如:隐藏字段、字段修改器、分页查询、定义关联关系。
咱们会在后面再来详细介绍模型与这些功能。
视图层就是输出对应的HTML代码。
在框架中可使用模板引擎(如:ThinkPHP自带引擎、Smarty引擎)
来进行变量替换。
可是如今服务端比较流行的都是API开发,经过API传递数据与前端进行交互,比较少使用视图来进行页面渲染。
许多的PHP框架中都具备路由这个功能,甚至在Vue、React之类的前端框架中也加入了路由这个概念。
路由其实就是咱们的访问URL和控制器中的Action作了一个映射,如上面提到的:
http://localhost/tp5_demo/public/index/index/index
就是访问index模块中的Index控制器下的index()方法。
咱们能够来尝试一下,在Index控制器中加入hello()方法:
访问URL: http://localhost/tp5_demo/public/index/index/hello
能够看到,成功的输出了
“Here is hello action”。
这个URL的实际意思就是访问index模块下的Index控制器中的hello方法。
路由还有许多强大的功能,咱们将会在后续的章节中进行介绍。
本章咱们介绍了如今流行的MVC三大件的基本用途,以及路由的概念。
童鞋们应该大概掌握了一个后端接口的工做流程,也就是:路由->控制器->模型(->视图)。
下一章节开始咱们就会详细的介绍各组件的实际用法。
不知道童鞋们有没有发现本篇文章中有个bug呢?
没错,咱们在入口文件时说过,当访问 http://localhost/tp5_demo/public/
Apache会自动访问到public目录下的index.php文件。
可是为何访问 http://localhost/tp5_demo/public/index/index/hello
不须要在URL中带上这个文件呢?
咱们能够在public目录下找到一个.htaccess文件,就是它帮咱们隐藏掉了index.php。
如今把其中的代码屏蔽掉,并重启Apache。
再次访问 http://localhost/tp5_demo/public/index/index/index。
浏览器会返回404。
而若是咱们访问 http://localhost/tp5_demo/public/index.php/index/index/index。
页面成功输出了Helloworld。
知道了入口文件规则以后,童鞋们有没有以为每次访问接口,须要输入项目路径很麻烦呢?咱们接下来配置一个本地虚拟域名。
首先编辑Apache目录下的httpd-vhosts.conf文件,输入如下代码:
而后编辑咱们本机的hosts文件,Windows10下的路径为:
C:/Windows/System32/drivers/etc/hosts
输入如下代码:
127.0.0.1 tp5.com
重启一下咱们xampp的Apache,而后在浏览器中输入 tp5.com ,若是能看到依旧输出Helloworld,那就表明配置成功了。(配置出现问题的童鞋可在公众号后台给赵童鞋留言哦)
配置完毕后,咱们之后只须要访问tp5.com这个地址,就能直接访问绑定好的项目路径。
----- End -----
更多好文
请扫描下面二维码
欢迎关注~