加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将类方法作为WordPress中的回调函数传递

发布时间:2020-12-13 22:10:17 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一种方法将类方法传递给回调函数参数. 我通常使用create_function(),但我听说它很慢并且很难调试. add_action('init',create_function('','$o = new AdminPageClass;'));class AdminPageClass { function __construct() { add_action('admin_menu'
我正在寻找一种方法将类方法传递给回调函数参数.

我通常使用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','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','admin_page'));
    }
    function admin_page() {
        ?>
        <div class="wrap">
            <h1>Hi there</h1>
            <p>Hello World!</p>
        </div>
        <?php
    }
}

我总是在单独的文件中定义类,所以我更喜欢第一种减少主插件文件中的行的方法.但如上所述,应避免使用create_function().

我感谢您的信息.

解决方法

我发现根本不需要创建静态方法.

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','admin_page'));
    }
    function admin_page() {
    ?>
        <div class="wrap">
            <h1>Hi there</h1>
            <p>Hello World!</p>
        </div>
    <?php
    }       
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读