我正在研究这种方法。
public function getTabs()
{
$tabs = [];
foreach ($this->campaigns as $index => $campaign) {
// return $campaign->getTitle();
// return get_class($campaign);
// $title = $campaign->getTitle();
// return $campaign->getTabTitle();
// return get_class($campaign);
// $title = $campaign->getTabTitle();
array_push($tabs, [
'title' => $title
]);
}
return $tabs;
}
$ this->广告系列数组中的值是广告系列对象的实例(对于shure,由于addCampaign方法中的类型提示 - 此处未显示但仍然显示)。
如果我取消注释返回值而不是将其保存到变量的行,它会起作用,但如果我尝试将其保存到$ title变量,则会抛出异常Call to a member function getTitle() on a non-object
。
我还尝试了其他方法,但仍然没有运气......
关于如何解决这个问题的任何想法?
为什么PHP在这里有所作为?想了解这个过程!
感谢每个人花时间阅读本文! :)
答案 0 :(得分:2)
我最好的选择是你campaigns
中的一个人不是一个对象。尝试var_dump($this->campaings);
。
如果你输入返回值会有效,因为它会在第一个元素之后停止foreach循环,但如果将它存储在变量中,它将尝试在数组的所有元素上调用getTitle()方法。
答案 1 :(得分:1)
以下代码可以帮助您找出特定项目的问题:
foreach ($this->campaigns as $index => $campaign) {
var_dump(get_class($campaign));
}
如果它没有帮助,那么看看整个班级会很棒。也许还有其他地方你要将一个项目添加到数组中。也许在初始化期间?