Passando o método de classe como uma função de retorno de chamada no WordPress

Eu estou procurando uma maneira de passar um método de classe para um parâmetro de função de retorno de chamada.

Eu costumo usarcreate_function() da seguinte forma, mas ouvi dizer que é lento e dificulta a depuração.

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
    }
}

Claro, isso pode ser feito com uma função extra como essa; no entanto, eu gostaria de fazê-lo sem isso, se possível.

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

Além disso, instanciar o objeto de classe antes dele torna isso possível, mas cria uma linha extra também.

$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
    }
}

Eu sempre defino classes em arquivos separados, então prefiro o primeiro método que reduz linhas no arquivo de plugins principal. Mas como mencionado, o uso decreate_function() Deveria ser evitado.

Eu aprecio sua informação.

questionAnswers(2)

yourAnswerToTheQuestion