视频教程地址:https://coding.imooc.com/learn/list/331.html
前言:作为一名优秀的程序员,我们为什么要学习框架源码,最主要的原因是要提供我们自身的编程内功,好多小伙伴儿在平时开发学习中,都是处在会用框架功能却根本不知道具体框架是怎么封装实现得,遇到问题也不知道该如何正确高效的处理,所以学会解析框架源码是非常有必要的,下面我来围绕这套国内最著名的THNIKPHP视频教程粗略的总结一下我在此套课程中所学到的知识,按照课程章节整理分享我的学习心得给大家,希望对大家有所帮助,如有问题欢迎交流指正。
1.
第1章,是讲师对于整套课程基本的的学习思路指导以及THINKPHP框架的获取安装。
2.
第2章,主要围绕着框架中类的自动加载机制展开详细介绍,我们都知道,在原生PHP开发中,如果要使用一个类,必须先要把文件include进来,但是用到的类都要include,那么肯定是特别乱的,不方便管理,所以现在主流的PHP框架必须要先处理类的自动加载,那就不得不说sql_autoload_register(https://www.php.net/manual/zh/function.spl-autoload-register.php)这个函数了,这个函数就是实现自动加载的核心,在think\Loader::register()方法中处理的,仔细参照视频教程及阅读框架源代码就可以理解加载类的实现原理了。
3.
第3章,讲解了框架开发中最常用最基本的配置文件相关内容,前面几节课讲了PHP的ArrayAccess接口的高级用法以及高性能的Yaconf扩展,之后深入解析了think\Config核心类,首先是通过set方法把应用配置目录下的各种文件格式的配置文件加载到内存中,然后在应用层,比如config('app.name')方式获取配置参数,进入调用到get方法,来获取到事先设置好的配置内容。
4.
第四章,可以说是框架的大核心之一,容器(高级注册树)占着举足轻重的地位,老师首先从PHP的常用的设计模式/编程解耦思想(单例,注册树,依赖注入,控制反转)开始讲起,包括高级的反射机制,循序渐进的讲到容器部分,还有后面几小节很流行的Facade相关原理及运用,容器的核心处理类是think\Container,从入口的
Container::get('app')->run()->send();
这里入手去学习容器类,门面模式处理的核心类是think\Facade(依赖于容器)。
5.
第5章,从框架的启动'内核'文件类讲起(think\App类),及后续的重要环节路由部分深度解析,未完待续。。。
我的心得:经历了一个多月的框架源码学习,确确实实感受到了自己有很大的提高,学习到不只是课程中老师讲解到的知识,因为在学习的过程中,难免遇到需要自己查询学习的东西,反复思考,反复打印,反复采坑的过程其实就是进步的过程,总结起来就是坚持住,从一遍不行就两遍,两遍不行就三遍。。,长此以往,没有搞不定的问题,在Singwa老师的带领下,一定会有更大的技术突破,感谢老师的辛苦付出(https://www.imooc.com/t/255838),大家在学习的过程中,有问题也一定要多研究,加油?。