Передача метода класса в качестве функции обратного вызова в WordPress

Я ищу способ передачи метода класса в параметр функции обратного вызова.

Я обычно используюcreate_function() следующим образом, но я слышал, что это медленно и затрудняет отладку.

add_action('init', create_function('', '$o = new AdminPageClass;'));
class AdminPageClass {

    function __construct() {
        add_action('admin_menu', array(&$this, '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">
            <h1>Hi there</h1>
            <p>Hello World!</p>
        </div>
        <?php
    }
}

Конечно, это можно сделать с помощью дополнительной функции, подобной этой; однако я хотел бы сделать это без этого, если это возможно.

add_action('init', 'load_admin_page_class');
function load_admin_page_class() {
    $o = new AdminPageClass;
}

Кроме того, создание экземпляра объекта класса до него делает это возможным, но также создает дополнительную строку.

$o = new AdminPageClass;
add_action('admin_menu', array(&$o, 'admin_menu'));

class AdminPageClass {

    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">
            <h1>Hi there</h1>
            <p>Hello World!</p>
        </div>
        <?php
    }
}

Я всегда определяю классы в отдельных файлах, поэтому я предпочитаю первый метод, который уменьшает количество строк в основном файле плагина. Но, как уже упоминалось, использованиеcreate_function() необходимо избегать.

Я ценю вашу информацию.

Ответы на вопрос(2)

Ваш ответ на вопрос