gpt4 book ai didi

PHP - 在 null 上调用成员函数

转载 作者:行者123 更新时间:2023-12-04 14:30:33 25 4
gpt4 key购买 nike

<分区>

我有以下三个类:

class Dom_Form_Section extends Dom {

/* ... code ommited ... */

public function addElem($Elem) {
if (is_a($Elem, 'Dom_Form_Elem')) $FormElem=$Elem;
else $FormElem=Dom_Form_Elem::create(array(), $Elem);

if ($FormElem !== false) $this->FormElems[]=$FormElem;

return $FormElem;
}
}

class Dom_Form extends Dom {

private $FormSections=array();

/* ... code ommited ... */

public function addElem($Elem) {
if (is_a($Elem, 'Dom_Form_Elem')) $FormElem=$Elem;
else $FormElem=Dom_Form_Elem::create(array(), $Elem);

if ($FormElem !== false) {
if (empty($this->FormSections)) $Section=$this->addSection();
else $Section=$this->FormSections[count($this->FormSections)];
return $Section->addElem($FormElem); // !!! this is where the error fires
} else return false;
}

public function addSection($SectionData=array()) {
$id=$this->FormId."-section-".count($this->FormSections);

if (!is_array($SectionData)) $SectionData=array();
$FormSection=new Dom_Form_Section($SectionData, $id);
$this->FormSections[]=$FormSection;

return $FormSection;

}
}

class Dom_Form_Elem extends Dom {

public static function create($data, $Elem) {
if (!is_a($Elem, 'Dom')) return false;
else {
$FormElem=new Dom_Form_Elem($data, $Elem);
return $FormElem;
}
}

/* ... code ommited ... */
}

如果我运行以下代码:

 $Form=new Dom_Form();
$Form->addElem($Input); // $Input is of 'Dom'

我收到以下错误:

fatal error :在 null 上调用成员函数 addElem()

如果我在两个 addElem 函数(Dom_Form_Section 中的一个和 Dom_Form 中的一个)中包含一些 echo ,它们都会触发,但是错误仍然存​​在。在我看来,好像我在某处循环,这就是我收到错误的原因。

此外,如果我 var_dump $Section 变量的内容,就在错误触发之前,它是一个有效的 Dom_Form_Section 对象。当我尝试调用 Dom_Form_Section::addElem() 方法时出现错误。

代码可能有什么问题?

编辑:
在@A-2-A 的帮助下,我发现问题出在这一行:

else $Section=$this->FormSections[count($this->FormSections)];

我试图访问 $this->FormSections 数组中未声明的成员。通过将 count($this->FormSections) 更改为 count($this->FormSections)-1,代码现在可以正常工作了。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com