这是这个问题的延续。当类被扩展时,它引用了原来的类方法。在创建的页面中回显的类名应该是AnotherAdminPage,它是扩展类名。
/*
Plugin Name: static method callback demo
*/
class AnotherAdminPage extends AdminPageClass {
}
add_action('admin_menu', AnotherAdminPage::_admin_menu());
class AdminPageClass {
static function _admin_menu() {
$class_name = get_class();
$classinstance = new $class_name();
return array(&$classinstance, "admin_menu");
}
function admin_menu() {
add_options_page(
'Sample Admin Page Class',
'Sample Admin Page Class',
'manage_options',
'sample_admin-page_class',
array(&$this, 'admin_page'));
}
function admin_page() {
?>
<div class="wrap">
<p><?php echo get_class(); ?></p>
</div>
<?php
}
}
它通过重新定义扩展类中的方法来工作,但在这种情况下扩展它变得毫无意义。
class AnotherAdminPage extends AdminPageClass {
static function _admin_menu() {
$class_name = get_class();
$classinstance = new $class_name();
return array(&$classinstance, "admin_menu");
}
function admin_page() {
?>
<div class="wrap">
<p><?php echo get_class(); ?></p>
</div>
<?php
}
}
那么有没有更优雅的方式来做到这一点?