新手读ThinkPHP6.0开发手册学习笔记

注:本人新手,包括之前的版本没有真正用过,也没有用过其它类似框架,仅仅限于知道几个框架的名字,甚至PHP都还没入门。本次是下定决心要读完这本手册,目标学会框架,真正入门PHP,笔记仅辅助于自身学习,增强理解,交流经验。

https://www.kancloud.cn/manual/thinkphp6_0/1037484

ThinkPHP6.0完全开发手册

基础

开发规范

安装

  • 基本的门槛,按步骤基本上都能行。没遇见什么错误。

命名规范

  • 小写字母+下划线:目录、类以外其它文件、函数名、配置参数、数据表和字段(不以下划线开头)、
  • 驼峰法命名(首字母大写):类文件、类名、
  • 驼峰法命名(首字母小写):方法的命名、属性的命名、
  • 大写字母+下划线:常量、环境变量定义、

目录结构

  • vendor目录:Composer类库目录,6.0新加入;
  • 原来的application目录变成app目录;
  • 取决于你采用的是单应用还是多应用模式;
  • 动手将但应用模式改为多应用模式,参考架构/多应用模式;
  • app目录下包含的默认应用文件,手册介绍的不够细,三个可以随意移动,是不是意思另外四个不能随意移动?

配置目录

  • 除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。
  • pp_debug(应用调试模式)、config_ext (配置文件后缀)只能在环境变量中修改,.env环境变量文件。
  • 动手修改环境变量文件,打开APP_DEBUG模式。
  • 其它配置暂且用不上。
  • Yaconf更是高阶配置了吧,暂时更用不上。https://www.laruence.com/tag/yaconf

架构

请求流程

  • 一个请求包含几十个步骤,似懂非懂,要想理解,只能靠多实践后才可领悟。

架构总览

  • 顾名思义,对整个框架的一个简单认识,每个功能后面都有对应的章节详细介绍,特别是路由、控制器、模型、视图肯定是后面的重点,对这些名字有印象即可。

入口文件

应用入口文件

  • 默认采用单一入口模式,目前对多应用模式更感兴趣;
  • 默认的应用入口文件位于public/index.php;
  • 如果你没有特殊的自定义需求,无需对入口文件做任何的更改;
  • 入口文件位置的设计是为了让应用部署更安全,请尽量遵循public目录为唯一的web可访问目录,其他的文件都可以放到非WEB访问目录下面;
  • 入口文件的默认内容目前只限看得懂一点,自己还写不出来的low水平。

控制台入口文件

  • 根目录的think(注意该文件没有任何的后缀),不是目录
  • 控制台入口文件用于执行控制台指令,例如:php think version

多应用模式

  • “单应用模式的优势是简单灵活,URL地址完全通过路由可控。配合路由分组功能可以实现类似多应用的灵活机制。”官方的这句说明搞得我晕,到底哪个更好呢?
  • 改为多应用模式,之前就尝试过了,只需要在app目录下新建一个文件夹(admin)即可,将controller目录移动过去,再改一下namespace的路径,在访问时加入应用路径如index.php/admin/Index/index/;
  • 自动多应用部署,index.php/admin/即可访问;
  • 修改config/app.php,修改默认应用default_app,index.php就可以直接访问到如admin;
  • 开启应用快速访问,think应用不存在的情况下没有返回默认应用,提示控制器不存在,不过提示的路径是默认应用的路径。
  • 增加应用入口,没有做任何更改,/admin.php就能直接访问到应用;
  • 应用映射,可以将任何不存在的应用路径映射到一个固定应用页面,就像不存在页面返回404一样;
  • 动手就一个没有成功,“假设并不存在think应用,这个时候系统会自动切换到单应用模式”,难道是因为我是多应用模式?

URL访问

  • url设计及重写,大概能懂,现在不涉及动手,后面再说。

容器和依赖注入

  • ThinkPHP使用容器来更方便的管理类依赖及运行依赖注入,新版的容器支持PSR-11规范。
  • 概念性的跳过,实践中再理解。

服务

门面

中间件

事件

路由

路由是应用开发中比较关键的一个环节,其主要作用包括但不限于:

  • 让URL更规范以及优雅;
  • 隐式传入额外请求参数;
  • 统一拦截并进行权限检查等操作;
  • 绑定请求数据;
  • 使用请求缓存;
  • 路由中间件支持;

新手觉得没有看下去的必要,这属于进阶内容了吧,暂且跳过。

控制器(controller)

控制器定义

  • /config/route.php可以定义默认控制器层名称controller、默认控制器名Index,默认操作名index,等等。
  • 多应用模式下,控制器类定义仅仅是命名空间有所区别。
  • 控制器后缀,感觉有点多余,没怎么理解,对于入门不重要。
  • 渲染输出,控制器的输出全部采用return的方式,了解一下。
  • 多级控制器,相互嵌套的感觉,了解一下。

基础控制器

  • 基础控制器(app\BaseController)的位置可以随意放置,只需要注意更改命名空间即可。这个6.0源码中包括了,易懂。
  • 基础控制器提供了数据验证功能,官方都不展开讲,暂且用不上,跳过。

空控制器

  • 空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位当前应用下的空控制器(Error)类,利用这个机制我们可以用来定制错误页面和进行URL的优化。

资源控制器

  • 没理解,暂且用不上,跳过。

控制器中间件

  • 没理解,代码验证报错,跳过。不影响入门。

请求/响应

  • 暂且跳过,只想快点入门,原理现在也理解不透。

数据库

连接数据库

  • 配置文件,/config/database.php,创建了一个tp60数据库名编辑了配置文件;
  • 每个应用可以设置独立的数据库连接参数,通常直接更改default参数即可。知道即可暂且不用。
  • 其它都只讲了数据库的用法,并没有代码实例与框架结合起来演示的,所以这里只能先跳过,无从下手了。

模型(Model)

  • 知道这是重点部分,可没有实例下手,了解起来难度大。先跳过。

视图(view)

  • 这也是重点部分,也没有实例下手,跳过。

错误和日志

  • 跳过

调试

  • 跳过

验证

  • 跳过

杂项

  • 跳过

命令行

  • 跳过

扩展库

  • 跳过

附录

  • 跳过

总结

最后只能说,想要入门完全靠手册肯定不行,官方完全开发手册对于小白用户有一定门槛,强迫看完意义还是不大,很多也看不懂,手册大部分知识倾向于理论,所以想学会还要花更多的时间。当然看了多少会有一些收获,这也是必经的一个步骤,只是开始别花费太多时间在手册上了。

通过学后自身情况大概有了一个继续学习的计划:

  1. 继续学习php中文网的视频教程,巩固知识的同时更加了解了新手该如何上手,视频中的内容看能不能顺利完成:https://www.php.cn/code/33085.html
  2. 找一款以thinkphp为基础框架的cms练一下手,做做二次开发。以此来深入了解thinkphp架构。
  3. php官方手册学习,这是基础,不会还是不行的,要结合一起学习,起码要能用原生php写一个简单的cms出来才算入门吧(照着教程写都行)。
  4. MySQL官方手册学习,数据库的基础。
  5. 一定要多动手才行,创造多动手的机会。

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注