注:本人新手,包括之前的版本没有真正用过,也没有用过其它类似框架,仅仅限于知道几个框架的名字,甚至PHP都还没入门。本次是下定决心要读完这本手册,目标学会框架,真正入门PHP,笔记仅辅助于自身学习,增强理解,交流经验。
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)
- 这也是重点部分,也没有实例下手,跳过。
错误和日志
- 跳过
调试
- 跳过
验证
- 跳过
杂项
- 跳过
命令行
- 跳过
扩展库
- 跳过
附录
- 跳过
总结
最后只能说,想要入门完全靠手册肯定不行,官方完全开发手册对于小白用户有一定门槛,强迫看完意义还是不大,很多也看不懂,手册大部分知识倾向于理论,所以想学会还要花更多的时间。当然看了多少会有一些收获,这也是必经的一个步骤,只是开始别花费太多时间在手册上了。
通过学后自身情况大概有了一个继续学习的计划:
- 继续学习php中文网的视频教程,巩固知识的同时更加了解了新手该如何上手,视频中的内容看能不能顺利完成:https://www.php.cn/code/33085.html
- 找一款以thinkphp为基础框架的cms练一下手,做做二次开发。以此来深入了解thinkphp架构。
- php官方手册学习,这是基础,不会还是不行的,要结合一起学习,起码要能用原生php写一个简单的cms出来才算入门吧(照着教程写都行)。
- MySQL官方手册学习,数据库的基础。
- 一定要多动手才行,创造多动手的机会。
发表回复