标签: thinkphp

  • 新手读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. 一定要多动手才行,创造多动手的机会。