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