赵童鞋带你入门PHP(六) ThinkPHP框架入门

栏目: PHP · 发布时间: 5年前

内容简介:阅读时长:10分钟技术预备:PHP基础语法本章我们主要讲解ThinkPHP的基础概况和Web服务端开发中常用的MVC结构。

阅读时长:10分钟

技术预备:PHP基础语法

本章我们主要讲解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

是同样的效果。

二、控制器(Controller)

在MVC架构中,控制器一般只负责如下功能:

  • 参数校验
  • 调用服务
  • 调用模型
  • 输出结果

在ThinkPHP框架中建立控制器只需要在对应的模块中的controller模块中新建一个类。

赵童鞋带你入门PHP(六) ThinkPHP框架入门

如上图则表示在index模块中建立了Index控制器。

而Index控制器下的index()方法即代表一个Action,在API开发中也就是一个接口,可以通过配置框架的路由URL进行绑定。

需要 注意 的是,Action中其实不应该出现太多的逻辑操作,Action应该只是作为模型层(Model)和视图层(View)的一个调用者,实际的逻辑操作应该是放到模型层去进行处理,更复杂的逻辑应该放在服务层(Service)去进行处理,这种分层的思想就是所谓的面向切面编程(AOP)。

这样做的好处就是当某个通用操作 (如用户登录、计算活动金额) 发生变化的时候,只需要在模型中修改代码,并不会影响到调用模型的控制器代码。

而如果把逻辑都放在控制器中,那么一旦需要修改代码的时候,就要把所有关联到的控制器代码全部修改一遍。

赵童鞋就见过把所有逻辑放在控制器,完全不用模型的项目,写的时候不需要考虑分层,不需要考虑迭代,爽得很。

但是当需求发生变更的时候,维护的 程序员 就只想XXOO了。。

三、模型(Model)

模型定义一般为一个模型类对应一个数据表。

服务端开发中大部分的逻辑操作其实就是在Select/Create/Update/Delete各种数据表。

一些简单的逻辑操作,如:获取ID为75的文章数据。应该放在模型中封装为一个方法,在控制器层去进行调用。

ThinkPHP框架为模型提供了许多便捷功能,如:隐藏字段、字段修改器、分页查询、定义关联关系。

我们会在后面再来详细介绍模型与这些功能。

四、视图(View)

视图层就是输出对应的HTML代码。

在框架中可以使用模板引擎 (如:ThinkPHP自带引擎、Smarty引擎) 来进行变量替换。

但是现在服务端比较流行的都是API开发,通过API传递数据与前端进行交互,比较少使用视图来进行页面渲染。

五、路由(Route)

许多的 PHP 框架中都具有路由这个功能,甚至在Vue、React之类的前端框架中也加入了路由这个概念。

路由其实就是我们的访问URL和控制器中的Action做了一个映射,如上面提到的:

http://localhost/tp5_demo/public/index/index/index

就是访问index模块中的Index控制器下的index()方法。

我们可以来尝试一下,在Index控制器中加入hello()方法:

赵童鞋带你入门PHP(六) ThinkPHP框架入门

访问URL: http://localhost/tp5_demo/public/index/index/hello

赵童鞋带你入门PHP(六) ThinkPHP框架入门

可以看到,成功的输出了

“Here is hello action”。

这个URL的实际意思就是访问index模块下的Index控制器中的hello方法。

路由还有许多强大的功能,我们将会在后续的章节中进行介绍。

六、总结

本章我们介绍了现在流行的MVC三大件的基本用途,以及路由的概念。

童鞋们应该大概掌握了一个后端接口的工作流程,也就是:路由->控制器->模型(->视图)。

下一章节开始我们就会详细的介绍各组件的实际用法。

附录一、隐藏index.php文件

不知道童鞋们有没有发现本篇文章中有个bug呢?

没错,我们在入口文件时说过,当访问 http://localhost/tp5_demo/public/

Apache会自动访问到public目录下的index.php文件。

但是为什么访问 http://localhost/tp5_demo/public/index/index/hello

不需要在URL中带上这个文件呢?

我们可以在public目录下找到一个.htaccess文件,就是它帮我们隐藏掉了index.php。

现在把其中的代码屏蔽掉,并重启Apache。

赵童鞋带你入门PHP(六) ThinkPHP框架入门

再次访问 http://localhost/tp5_demo/public/index/index/index。

浏览器会返回404。

赵童鞋带你入门PHP(六) ThinkPHP框架入门

而如果我们访问 http://localhost/tp5_demo/public/index.php/index/index/index。

页面成功输出了Helloworld。

赵童鞋带你入门PHP(六) ThinkPHP框架入门

附录二、虚拟域名

知道了入口文件规则之后,童鞋们有没有觉得每次访问接口,需要输入项目路径很麻烦呢?我们接下来配置一个本地虚拟域名。

首先编辑Apache目录下的httpd-vhosts.conf文件,输入以下代码:

赵童鞋带你入门PHP(六) ThinkPHP框架入门

然后编辑我们本机的hosts文件,Windows10下的路径为:

C:/Windows/System32/drivers/etc/hosts

输入以下代码:

127.0.0.1 tp5.com

重启一下我们xampp的Apache,然后在浏览器中输入tp5.com ,如果能看到依旧输出Helloworld,那就代表配置成功了。 (配置出现问题的童鞋可在公众号后台给赵童鞋留言哦)

赵童鞋带你入门PHP(六) ThinkPHP框架入门

配置完毕后,我们以后只需要访问tp5.com这个地址,就能直接访问绑定好的项目路径。

----- End -----

更多好文

请扫描下面二维码

欢迎关注~

赵童鞋带你入门PHP(六) ThinkPHP框架入门

以上所述就是小编给大家介绍的《赵童鞋带你入门PHP(六) ThinkPHP框架入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图形程序开发人员指南

图形程序开发人员指南

Michael Abrash / 前导工作室 / 机械工业出版社 / 1998 / 128

Michael Abrash's classic Graphics Programming Black Book is a compilation of Michael's previous writings on assembly language and graphics programming (including from his "Graphics Programming" column......一起来看看 《图形程序开发人员指南》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具