内容简介:阅读时长: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模块中新建一个类。
如上图则表示在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()方法:
访问URL: http://localhost/tp5_demo/public/index/index/hello
可以看到,成功的输出了
“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。
再次访问 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 -----
更多好文
请扫描下面二维码
欢迎关注~
以上所述就是小编给大家介绍的《赵童鞋带你入门PHP(六) ThinkPHP框架入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 赵童鞋带你入门PHP(四) PHP进阶语法
- TiDB入门(四):从入门到“跑路”
- MyBatis从入门到精通(一):MyBatis入门
- MyBatis从入门到精通(一):MyBatis入门
- Docker入门(一)用hello world入门docker
- 初学者入门 Golang 的学习型项目,go入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Build a Billion Dollar App
George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95
Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!