[英]“Call to undefined function” error when calling member function from constructor
好吧,这令人沮丧,但我想可能有点疏忽。
我有这个PHP类:
class SearchModel
{
private $searchOptions;
public function __construct()
{
$this->searchOptions = populateSearchOptions();
}
public function getSearchOption()
{
return $this->searchOptions;
}
private function populateSearchOptions()
{
$this->searchOptions = array(
// values....
);
}
}
当我实例化此类时,PHP返回:
Fatal error: Call to undefined function populateSearchOptions() in SearchModel.php ...
更改时:
$this->searchOptions = populateSearchOptions();
至:
$this->searchOptions = $this->populateSearchOptions();
投诉已消失,但$searchOptions
的内容为NULL
。
所以...如果我从构造函数内部以这种方式调用populateSearchOptions()
,请实例化该类并尝试输出数组的内容:
$this->model = new SearchModel();
// Output contents of model->searchOptions
输出为NULL。 但是,当我这样做时(不必费心尝试从构造函数中调用populateSearchOptions()
):
$this->model = new SearchModel();
$this->model->populateSearchOptions();
// Output contents of $this->model->searchOptions
它根据需要输出分配给$this->model->searchOptions
的值。
有人知道这是怎么回事吗? 我只想能够从SearchModel
构造函数调用populateSearchOptions()
。
将构造函数从
public function __construct()
{
$this->searchOptions = populateSearchOptions();
}
至
public function __construct()
{
$this->populateSearchOptions();
}
1)始终在php中使用$this
来调用非静态类方法和变量
2)之前的结果为null,因为populateSearchOptions
函数未返回值,因此您实际上在函数中为其设置了一个值,然后立即将其设置为null
。
或者,您可以将populateSearchOptions
函数更改为
private function populateSearchOptions()
{
return array(
// values....
);
}
并有效地做同样的事情。
model-> searchOptions的输出内容为NULL
它为null,因为它是一个私有变量
尝试将searchOptions公开,那么会很好:
class SearchModel
{
public $searchOptions;
public function __construct()
{
$this->searchOptions = $this->populateSearchOptions();
}
private function populateSearchOptions()
{
$this->searchOptions = array(
// values....
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.