一個回調函數這是this question的延續。當類擴展時,它指的是原來的類方法。在創建頁面中迴應類的名稱應該是AnotherAdminPage這是擴展類的名稱。傳遞擴展類方法,如在WordPress
/*
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
}
}
那麼有沒有更優雅的做法呢?
因爲您不再使用靜態函數,所以不是真正的答案 – soju
所以這是一個與靜態範圍有關的問題。謝謝你提到它。但這樣,擴展類似乎是指自己的實例。這是我想要的。但奇怪的是,如果不重新定義'msg()'方法,它會引用原始的。 – Teno