重用类的实例

时间:2015-04-01 13:10:21

标签: php wordpress

我认为我在PHP上用OOP遗漏了一些东西。

我目前正在为WordPress开发一个插件,我有一本书的类声明:

<?php
class WPBook{
    private $title;
    function setTitle($_title){
        $this->title = $_title;
    }
    function getTitle(){
        return $this->title;
    }
}
?>

add_action( 'hookOne', 'function_do_stuff');
add_action( 'hookAfter_hookOne', 'function_do_more_stuff');
function function_do_stuff(){

    //some more stuff
    $newBook = new WPBook;
    $title = $newBook->setTitle ='titleA';
    echo $title; //echos 'titleA';
    // function_do_more_stuff($title); does not work because the
    // function is called on the hookAfter_hookOne
}

function function_do_more_stuff(){
    // here I want to access the $title from the function_do_stuff();
    // but I do not know how.
}

现在,我希望能够从do_stuff()功能访问该书的标题,以便do_more_stuff()起作用。

然而问题是我无法使用do_stuff()返回do_more_stuff(),因为do_more_stuff()在动作挂钩上被调用。

所以我的问题是我不知道如何通过将一个变量从一个函数传递到另一个函数来从两个不同的函数访问同一产品的标题。

1 个答案:

答案 0 :(得分:0)

这个问题有些模糊,因为你的例子使用自定义钩子 hookOne hookAfter_hookOne

这很重要,因为根据调用钩子的方式,您可以使用类对象作为参考。

如果是基本电话<?php do_action('hookAfter_hookOne'); ?>,你就会陷入困境。

但是如果使用<?php do_action_ref_array('hookAfter_hookOne', array(&$newbook)); ?> see doc. here调用钩子,那么您可以直接访问引用的对象,如下所示:

<?php

function function_do_more_stuff(&$newbook){
   newbook->setTitle ='titleB';
}

另一种方法是在函数之外全局化对象,但这可能不是预期的效果。

希望它有所帮助。