PHP警告:从空值创建默认对象 - 困惑

时间:2016-03-29 11:40:43

标签: php warnings

我在PHP.INI中包含错误和警告,最后2个错误已经解决,它们主要是"从空值创建默认对象" - 问题是我不知道从哪里开始。

使用上一个(相同)错误,因为从当前扩展了一个公共类并且实例化了一个对象,所以只需将实例嵌套在!isset条件中就更容易了。

然而,这里

public function forward( $forward )
{
     $this->viewBean->_forward = $forward;
}

错误指向$ this。 没有对象实例化,上面的方法是标识为 BaseController 的抽象类的一部分因为我无法从抽象类实例化对象,所以我真的不知道如何继续调试这个PHP警告。

如果有任何信息不对,请告诉我,我会发回评论

1 个答案:

答案 0 :(得分:1)

  

这样的PHP不支持抽象类。

您必须将对象存储为本地变量才能记住'它的数据。

class Example
{
    public $abstract;
    public function forwards($forwards)
    {
        $this->abstract = $this->viewBean;
        $this->abstract->_forwards = $forwards;
    }
    public function viewBean()
    {
        return new OtherClass;
    }
}

// TODO: Add your other class with its Public variable

使用示例:

// <-- for newer supported php versions -->
$exampleClass = (new Example)->forwards("add me!");
echo $exampleClass->abstract->_forwards;

// <-- for depreciated php versions -->
$exampleClass = new Example;
$exampleClass->forwards("add me!");
echo $exampleClass->abstract->_forwards;

虽然这可以解决您的问题,但我不明白您为什么要转发变量?您可以使用extends创建继承上下文中保存的属性和方法的子类。

您也可以使用callback方法。