Почему новый оператор не создает цепную структуру? - PullRequest
0 голосов
/ 19 марта 2012

Если GeneralNews() возвращает this и CreateInstance() возвращает this, первые 2 метода работают, но последний не работает.

Я не понимаю, почему?

$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  

Код класса GeneralNews:

class GeneralNews {         
    public function GeneralNews(){
        return this;
    } 

    public static function CreateInstance(){  
        $strClassName = 'GeneralNews';   
        return new $strClassName;  
    }
}

1 Ответ

2 голосов
/ 19 марта 2012

Действительно, прямая ссылка на объекты new выражений не работает в PHP 5.3 , но работает в PHP 5.4 .

...