【问题标题】:How to overide a class public static function?如何覆盖类公共静态函数?
【发布时间】:2012-09-21 22:45:31
【问题描述】:

如何在不编辑该文件的情况下覆盖类公共静态函数?假设我有一个类文件名 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 包装器。如何在不触及核心类文件的情况下做到这一点?有没有办法覆盖它?

【问题讨论】:

    标签: php class function static public


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      5.3 之前的任何内容都意味着您可能必须重新考虑该特定类的当前实现/架构。

      【讨论】:

        猜你喜欢
        • 2018-05-20
        • 2020-05-13
        • 1970-01-01
        • 2015-09-27
        • 2011-02-18
        • 1970-01-01
        • 2016-01-25
        • 2013-05-13
        • 2019-10-02
        相关资源
        最近更新 更多