当var_ump获得正确的结果时,出现“调用非对象上的成员函数”错误

时间:2011-06-19 作者:Jenny

我得到了“在非对象上调用成员函数embed()”的错误,但我可以看到var\\u dump的结果是一个对象。请帮助评估以下代码:

这是创建图片的类:

Class Picture{
//....
function embed() {...}
//....
}
这是模板的类:

Class Picture_Template{
$obj_id = $post->ID;
$pic = New Picture( $obj_id );
$this->obj = $pic;
}
这是一个测试代码的函数:

function test_picture(){
global $pic_template;
$pic_template = new Picture_Template();
$obj =$pic_template->obj;
$obj_func =$obj->embed();
echo \'<pre>\';
var_dump( $obj ); // I can see it is an object
var_dump( $obj_func ); // I can see the embed() function output correct result
}
这是获取错误消息的函数:

function play_button(){
echo get_play_button();
}

function get_play_button(){
global $pic_template;
if (!$obj )
 $obj =& $pic_template->obj;
if ( $obj->embed(){
//do something
}
}

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

在我看来Picture_Template 毫无价值-它甚至没有正确的格式(您需要将运行时代码放在constructor).

此外,您似乎还缺乏对variable scope (如访问$post$obj 在函数和类中,而不是首先将它们全球化)。

以下是我认为你正在尝试做的事情;

function test_picture()
{    
    $picture = new Picture( get_the_ID() );
    $picture_result = $picture->embed();

    /* debugging */
    echo \'<pre>\';
    var_dump( $picture );
    var_dump( $picture_result );
    echo \'</pre>\';
}

function play_button()
{
    echo get_play_button();
}

function get_play_button()
{
    $picture = new Picture( get_the_ID() );

    if ( $embed = $picture->embed() ) {
        // do something & return something
    }

    return null; // return nothing if embed failed
}

结束

相关推荐

Ajax with OOP doesn't work

我在theme的functions.php 使用ajax的文件,原理如下:add_action(\'admin_head\', \'rw_script\'); function rw_script() { echo \' <script type=\"text/javascript\"> // delete image $(\".delete_image\").click(function(){