Передача метода класса в качестве функции обратного вызова в 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()
необходимо избегать.
Я ценю вашу информацию.