奇乐网 - 草根博客网站

typecho源代码解析4 - 业务逻辑

admin 1703 0
未来工作室

这篇我们就讲讲首页的业务逻辑,首先我们看看路由。

[index] => Array
        (
            [url] => /
            [widget] => Widget_Archive
            [action] => render
            [regx] => |^[/]?$|
            [format] => /
            [params] => Array
                (
                )

        )

由路由表中的正则表达式我们能看出首页的URL为https://blog.phpgao.com/或http://www.phpgao.com,并且不接受任何参数。

下面我们找到了Widget_Archive类,让我们先看看这个类的继承关系(其中Typecho_Widget和Widget_Abstract为抽象类):
typecho源代码解析4 - 业务逻辑
由上一节我们可以得到结论,当路由表匹配到/,会实例化Widget_Archive类,他位于var/Widget/Archive.php,其方法为render。

下面我们一步步跟进,看看到底发生了些什么?

再深入之前,我们需要有一些基本的概念,在此需要讲清楚,便于理解typecho的设计模式:

基类Typecho_Widget
该类位于var/Typecho/Widget.php,是var/Widget文件夹下所有类的基类,也就是说,几乎所有与业务有关的功能,就是继承此类。

纵观此类,方法不是很多,老高在此挑几个重要的讲解:

/**
 * 获取对象插件句柄
 * 此方法为插件的实现提供了快捷的语法
 */
public function pluginHandle($handle = NULL)
{
    return Typecho_Plugin::factory(empty($handle) ? get_class($this) : $handle);
}

/**
 * 将类本身赋值
 * 模板中很常见,将自己复制给某一个变量,在调用next()方法循环输出
 */
public function to(&$variable)
{
    return $variable = $this;
}

/**
 * 将每一行的值压入堆栈
 * 把数据放到自己的'肚子'里

评论列表 (已有0条评论)

消灭零回复

发表评论 (已有0条评论)


选择表情