Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类方法don';t存在(抛出致命错误)-但它存在_Php_Oop_Methods - Fatal编程技术网

Php 类方法don';t存在(抛出致命错误)-但它存在

Php 类方法don';t存在(抛出致命错误)-但它存在,php,oop,methods,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(i

我不知道为什么,但是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
            )
        */
    }
?>
我不知道为什么会这样

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


我从头开始构建框架。

从错误来看,
$loadBlock
似乎不包含
Visio\u Blog\u Block\u Recent\u Widget
或任何类的实例

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

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

}

所以问题在于分配

您可以发布getBlock()函数吗?
公共静态函数getBlock($block){$blockName=self::getBlockName($blockName);如果(class_exists($blockName)){self::$_实例[$blockName]=new$blockName();返回self::$_实例[$blockName];}返回null;}
因此
$loadBlock
echo$loadBlock->widgetContent()之前不是
null
不,直到var_dump打印出对象,它才为空。好的,找到问题了。该foreach循环中有2条数据库记录。第一个不存在,因此会触发该错误。