当前位置: 首页 > 后端技术 > PHP

Codeigniter4.0-dev版源码学习笔记2——入口和初始化操作

时间:2023-03-29 22:51:43 PHP

index.phpindex.php是整个框架的入口文件,也就是说所有的请求都是从它开始的。因为index.php的源码很简洁,所以直接放源码截图,根据截图说说源码。文件位置:/index.php代码很简单,一共7行,前几行只是定义了一些变量,属于前言,就像我的一篇笔记,看不看都没用。第六行进入正题,new了一个新的对象$path,根据之前的requirepath,可以找到paths.php的源码:文件位置:/application/config/paths.php可以看到这个class定义了系统目录的位置,所以如果有同学想自定义目录结构,就要进行相应的修改。因为我们主要是搞源码的,肯定不会改目录,所以这个文件对我们用处不大。回到index.php,只剩下两行代码:$app=requirertrim($paths->systemDirectory,'/').'/bootstrap.php';$app->run();这两行代码就像是电源键,只要巧妙地执行它,你的整个程序就会运行起来。第一行代码需要一个bootstrap.php文件。在这个文件中,完成了整个CI框架的初始化,包括自动加载等。$app->run()行完成了整个应用程序的运行。因为后面会深入讲这两行代码,所以就拿在这里了。下面是程序的执行过程:bootstrap.php文件:bootstrap.php是整个CI的“BIOS系统”。它只负责初始化一些自动加载和找到Codeigniter核心然后初始化返回到入口文件。下面是bootstrap.php的源码截图:第9行之前,定义了一些路径常量。第9行require带有一些常量。如果你有自己的一些常量,也可以考虑将它们加入到这个文件中,那么几乎在整个CI执行过程中,它应该是一直可用的。10行Common.php这个文件定义了一些常用的函数,比如缓存、视图、会话等,通过这个函数可以很方便的在程序运行过程中进行很多常用的操作。第11行是CI自己实现的自动加载类,大部分情况下用于自动加载自己的类库。当然,为了兼容流行的Composer,18-20行也对Composer进行了处理。第12行是CI自身自动加载的配置。如果你自己写了一个class文件,想让CI自动帮你加载,你可以在这里配置class的相关信息。第13行的services.php是主要事件。它是容器的一个实现。你可以配置一些你写在里面的类库初始化信息。然后,在需要的时候,可以像第15行那样直接使用这个类,运行期间保证这个类的单一实例化。第15行,如前所述,实际上实例化了CI自己的autoload类,并在第16行传入application目录下的autoload配置,并在第17行注册。第22行,根据CI注释:始终加载urlhelper,因为90%的应用程序代码都会用到它。据说这个helper函数是从之前的Common.php中加载的。第23行是核心,new了Codeigniter的核心类,并传入application/config/app.php的配置,第24行初始化,然后笨拙的返回给index.php流程图到此结束article:summaryandnextsectionpreview本节分析CIBIOS系统:bootstrap.php,该文件初始化一些基础类,查找并初始化CI核心对象,并将该对象返回到入口文件。下一节当然会查看Codeigniter.php文件。本文可转载,但转载前需发邮件至imustgxd*sina.cn进行交流,未交流的视为侵权。转载时必须注明原文链接(https://segmentfault.com/a/11...),并保留该段文字。