Pasando el método de clase como una función de devolución de llamada en WordPress
Estoy buscando una manera de pasar un método de clase a un parámetro de función de devolución de llamada.
Suelo usarcreate_function()
de la siguiente manera, pero he oído que es lento y dificulta la depuración.
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
}
}
Por supuesto, se puede hacer con una función extra como esta; Sin embargo, me gustaría hacerlo sin él si es posible.
add_action('init', 'load_admin_page_class');
function load_admin_page_class() {
$o = new AdminPageClass;
}
Además, crear una instancia del objeto de clase anterior lo hace posible, pero también crea una línea adicional.
$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
}
}
Siempre defino las clases en archivos separados, así que prefiero el primer método que reduce las líneas en el archivo del complemento principal. Pero como se mencionó, el uso decreate_function()
debería ser evitado.
Aprecio su información.