Php 在WordPress中将类方法作为回调函数传递
我正在寻找一种将类方法传递给回调函数参数的方法 我通常使用Php 在WordPress中将类方法作为回调函数传递,php,class,wordpress,Php,Class,Wordpress,我正在寻找一种将类方法传递给回调函数参数的方法 我通常使用create_function(),如下所示,但我听说它很慢,并且很难调试 add_action('init', create_function('', '$o = new AdminPageClass;')); class AdminPageClass { function __construct() { add_action('admin_menu', array(&$this, 'admin_men
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
}
}
此外,在类对象之前实例化它使之成为可能,但它也会创建一个额外的行
$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
}
}
$o=新的AdminPageClass;
添加操作(“管理菜单”,数组(&$o,“管理菜单”);
类AdminPageClass{
功能管理菜单(){
添加选项页面(
“示例管理页面类”,
“示例管理页面类”,
“管理选项”,
“示例\u管理页面\u类”,
数组(&$this,'admin_page');
}
函数管理页面(){
?>
你好
你好,世界
创建一个静态方法,该方法返回包含类实例和方法名称的数组
/*
Plugin Name: static method callback demo
*/
add_action('admin_menu', AdminPageClass::_admin_menu());
class AdminPageClass {
static function _admin_menu() {
$class_name = get_class();
$classinstance = new $class_name();
return array(&$classinstance, "admin_menu");
}
function admin_menu($instantiate=false) {
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
}
}
/*
插件名称:静态方法回调演示
*/
添加操作('admin_menu',AdminPageClass::_admin_menu());
类AdminPageClass{
静态功能_admin_menu(){
$class_name=get_class();
$classinstance=new$class_name();
返回数组(&$classinstance,“管理菜单”);
}
函数管理菜单($instantiate=false){
添加选项页面(
“示例管理页面类”,
“示例管理页面类”,
“管理选项”,
“示例\u管理页面\u类”,
数组(&$this,'admin_page');
}
函数管理页面(){
?>
你好
你好,世界
我发现根本不需要创建静态方法
add_action('admin_menu', array(new AdminPageClass, "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
}
}
add_action('admin_菜单',数组(新的AdminPageClass,“admin_菜单”);
类AdminPageClass{
功能管理菜单(){
添加选项页面(
“示例管理页面类”,
“示例管理页面类”,
“管理选项”,
“示例\管理\页面\类”,
数组(&$this,'admin_page');
}
函数管理页面(){
?>
你好
你好,世界
我发现了一个问题。当这个类被扩展时,它不是指扩展的类,而是指原来的类。我问了一个新问题:很好而且有用的答案。谢谢。它给了我很多帮助。
add_action('admin_menu', array(new AdminPageClass, "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
}
}