如何覆盖类公共静态函数?

时间:2012-10-01 03:43:24

标签: php class function static public

如何在不编辑该文件的情况下覆盖类公共静态函数?假设我有一个类文件名Display,并且该类内部有一个名为body open的公共静态函数。

class Display {
    public static function body_open() {
        echo "\n" . '</head><!-- End <head> -->' . "\n\n";
        echo '<body class="' . self::body_class() . '">' . "\n\n";
        do_action('headway_body_open');
        echo "\n" . '<div id="zurbwrap">' . "\n";
        do_action('headway_whitewrap_open');
        do_action('headway_page_start');
    }

    public static function body_close() {
        echo "\n\n";
        do_action('headway_whitewrap_close');
        echo '</div><!-- #zurbwrap -->' . "\n";
        do_action('headway_body_close');
        echo "\n" . '</body>';
    }
}

假设我要更改body_open公共静态函数的div包装器。如何在不触及核心类文件的情况下执行此操作?有没有办法覆盖它?

2 个答案:

答案 0 :(得分:1)

如果您使用的是PHP 5.3+,则可以使用后期静态绑定:http://php.net/manual/en/language.oop5.late-static-bindings.php

5.3之前的任何事情意味着您可能不得不重新考虑该特定类的当前实现/架构。

答案 1 :(得分:1)

如果您使用的是PHP 5.3 +,请使用late static bindings