2016-12-07 131 views
0

我正在使用php7的類型提示。所以我下面的代碼類型錯誤:返回值必須是實例,空返回

class Uni 
{ 
/** 
    * @var Student 
    * 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Student") 
    * @ORM\JoinColumn(nullable=false) 
    */ 
    private $student; 

    function _construct(){ 
     $this->student= new Student(); 
    } 

    /** 
    * Set student 
    * 
    * @param \AppBundle\Entity\Student $student 
    * 
    * @return Uni 
    */ 
    public function setStudent (Student $student): Uni 
    { 
     $this->student= $student; 

     return $this; 
    } 

    /** 
    * Get student 
    * 
    * @return \AppBundle\Entity\Student 
    */ 
    public function getStudent(): Student 
    { 
     return $this->student; 
    } 

} 

現在,當我嘗試加載統一新形式,我得到這個錯誤

Type error: Return value of AppBundle\Entity\Uni::getStudent() must be an instance of AppBundle\Entity\Student, null returned 

我怎樣才能擺脫這種錯誤的?我發現了一個可空的解決方案,它需要php 7.1。但現在我必須堅持使用PHP 7.0。那我該如何解決這個問題?

回答

4

在構造函數中有一個錯字,兩個下劃線必須在construct之前。

function __construct() { 
    $this->student = new Student(); 
} 

正因爲如此,$studentnull創建你的對象時。

相關問題