类方法不存在(抛出致命错误) - 但它存在

时间:2013-08-29 16:38:26

标签: php oop methods

我不知道为什么,但PHP会触发致命错误,因为类方法不存在。 但它显然存在!

left.phtml:

<?php
    $block = Block::getBlock('core/sidebar_modules');
    foreach($block->getSidebar('left') AS $key => $value)
    {
        $_block = explode('_',$value->getName());
        if(isset($_block[1]))
        {
            $_block[1] .= '_widget';
        }
        $loadBlock = Block::getBlock(implode('/',$_block)); // returns instance of Visio_Blog_Block_Recent_Widget
        Debug::var_dump($loadBlock);
        /*
            returns:

            object(Visio_Blog_Block_Recent_Widget)#33 (0) {
            }
        */
        echo $loadBlock->widgetContent();
        /*
            returns:

            Fatal error: Call to a member function widgetContent() on a non-object in E:\docroot\vhosts\zend.local.host\htdocs\app\design\default\templates\left.phtml on line 13
        */

        Debug::print_r(get_class_methods($loadBlock));
        /*
            returns:

            Array
            (
                    [0] => __construct
                    [1] => widgetContent
            )
        */
    }
?>

Widget.php(Visio_Blog_Block_Recent_Widget)

Class Visio_Blog_Block_Recent_Widget
{
    public function __construct()
    {
        return $this;
    }

    public function widgetContent()
    {
        return 'content';
    }

}

我不知道为什么会这样?

在实现嵌套视图模板时,这是否可能是我的View类错误。

我从头开始构建框架。

1 个答案:

答案 0 :(得分:0)

从错误看来,$loadBlock不包含Visio_Blog_Block_Recent_Widget或任何类的实例。

所以问题在于分配。