Typecho源码分析(5)
上回说到在config.inc.php
文件里,执行了Typecho_Common::init()函数,自动加载了所有class,算是把Typecho启动起来了。
那么,接下来,就回到index.php文件里,接下来执行这个函数:
/** 初始化组件 */
Typecho_Widget::widget('Widget_Init');
这个函数做啥的呢?
首先,这个Typecho_Widget是一个抽象类,有个静态函数widget,接受一个字符串(第一个参数,还有其他参数)。
第二,具体干嘛呢?就是根据这个字符串,来定义一个类,然后再实例化这个类。在这里就是实例化Widget_Init
这个类,然后这个实例化之后的类(class),也就是对象(object),会执行一个execute
方法,在里面再执行很多事。
具体到这个Widget_Init
,其实根据类名,查到文件/var/Widget/Init.php
,里面有个Widget_Init
类,然后实例化。
然后执行execute
方法,做了很多很多事,比如初始化Widget_Options
类,初始化路径,初始化路由器,初始化时区,初始化插件,等等吧。
反正做了很多事,具体一时半会也不知道做的这些事有什么用。
最后,把实例化之后的对象放到_widgetPool
里面。