假设GeneralNews()
返回this
,CreateInstance()
返回this
,前两个方法有效,但最后一个方法失败。
我不明白为什么?
$objGeneralNews = new GeneralNews();
$arrDataList = $objGeneralNews->SetWhere('news01date="2011-01-01"')->GetFrontList();
var_dump( $arrDataList ); //This method works
$arrDataList = GeneralNews::CreateInstance()->SetWhere('news01date="2011-01-01"')->GetFrontList();
var_dump( $arrDataList ); //This method works
$arrDataList = (new GeneralNews())->SetWhere('news01date="2011-01-01"')->GetFrontList();
var_dump( $arrDataList ); //This method doesn't works
分类代码通用新闻:
class GeneralNews {
public function GeneralNews(){
return this;
}
public static function CreateInstance(){
$strClassName = 'GeneralNews';
return new $strClassName;
}
}
实际上,直接引用new
表达式的对象在PHP 5.3中不起作用,但在PHP 5.4中起作用。