2013-07-22 77 views
0

所以我試圖在停止編程幾年後學習phpOOP,所以我有點生疏。學習php類,卡在__contruct();

無論如何,我有一個類blogEntry,因此我可以顯示已通過echo'ing $ blogEntry->文章例如使用函數cleanForDisplay清除的博客條目。但是我沒有收到錯誤,並且變量沒有被顯示。

感謝

class blogEntry 
{ 
    var $headline; 
    var $author; 
    var $date; 
    var $image; 
    var $imagecaption; 
    var $article; 

    public function __contruct() 
    { 
    $this->headline = cleanForDisplay($row['headline']); 
    $this->author = cleanForDisplay($row['postedby']); 
    $this->imagecaption = cleanForDisplay($row['imagecaption']); 
    $this->article = cleanForDisplay($row['article']); 
    $this->image = $row['image']; 
    $this->date = $row['date']; 
    } 
} 
+0

在你的構造函數,你在哪裏得到的$值行[ '標題'],$行[ 'postedby']等:

blogEntry類可以如下初始化?另外,你如何訪問這個類? – Maximus2012

+3

你從哪裏得到'$ row'?通常,您應該將ID傳遞給構造函數,然後使用預準備語句在數據庫中查找該項目。 'contruct'!=='construct'。 – BenM

+1

也是,cleanFor顯示blogEntry類的功能嗎? – Maximus2012

回答

3

你有一個錯字,神奇的方法爲__construct()因爲構造函數是不是在PHP強制性您沒有收到任何錯誤。

此外,$row變量未定義,所以即使使用構造函數,字段也將爲null。

3

您的方法拼錯了。它應該是__construct()

其次,您沒有傳入該方法的任何參數,因此$row未定義。

考慮以下幾點:

public function __construct($row) 
{ 
$this->headline = cleanForDisplay($row['headline']); 
$this->author = cleanForDisplay($row['postedby']); 
$this->imagecaption = cleanForDisplay($row['imagecaption']); 
$this->article = cleanForDisplay($row['article']); 
$this->image = $row['image']; 
$this->date = $row['date']; 
} 

$row傳入的參數,因此,您要設置的變量將被定義。

$blogEntry = new blogEntry($rowFromDB);