上回说到在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里面。

标签: Typecho, 源码分析

添加新评论