2015-03-25 87 views
0

我想在PHP中嵌套另一個類中的類,並通過HTML顯示數據。我有一個問題類,並在該類內創建一個用戶對象。用戶對象包含創建問題的用戶的信息。出於某種原因,我在輸出中收到「(!)致命錯誤:無法訪問私有屬性Question :: $ user」。我可以告訴的任何事情都是私人的,它會阻止我拉取數據。下面是一些代碼:嵌套類錯誤

class Question extends Model { 
    private $user; 
    private $content; 
    private $title; 
    private $tags; 
    private $date; 
public function __construct($user, $content, $title, $tags, $date) { 
    parent::__construct(); 
    $this -> setUser($user); 
    $this -> setContent($content); 
    $this -> setTitle($title); 
    $this -> setTags($tags); 
    $this -> setDate($date); 
} 

public function getUser() { 
    return $this -> user; 
} 

public function setUser($user) { 
    $this -> user = User::findUser($user); 
    return $this; 
} 

那麼這是我的用戶等級:

class User extends Model { 
    private $email; 
    private $password; 
    private $fname; 
    private $lname; 

    public function __construct($email, $password, $fname, $lname) { 
     parent::__construct(); 
     $this -> setEmail($email); 
     $this -> setPassword($password); 
     $this -> setFname($fname); 
     $this -> setLname($lname); 
    } 

創造的問題和用戶對象的功能如下:

private static function makeQuestionFromRow($row) { 
     $question = new Question($row['user_id'], $row['quest_Content'], $row['quest_Title'], $row['quest_Tags'], $row['quest_DatePosted']); 
     $question -> id = $row['quest_ID']; 
     return $question; 
    } 

private static function makeUserFromRow($row) { 
     $user = new User($row['user_email'], $row['user_pwd'], $row['user_fname'], $row['user_lname']); 
     $user -> id = $row['user_id']; 
     return $user; 
    } 

而且兩者是型號的子類:

class Model { 
    protected $id; 

    public function __construct() { 

    } 

    public function getId() { 
     return $this -> id; 
    } 

我正在嘗試顯示用戶的名和姓,並將其鏈接到用戶頁面,該用戶頁面查看用戶信息。所以,我的代碼,這樣做是:

<b>Date Posted: </b>{{date("m/d/Y", strtotime($question->getDate()))}} by <a href="@@user/view/{{$question->user->getId()}}@@"> TEST</a> <br /><br /> 

日期代碼出來正確,但用戶id不出來,並鏈接到「測試」上面。我不確定我是否在做某些語法錯誤的或什麼。如果有人能幫助我,我會很感激。

這是作業。不要試圖克服任何人。再次感謝。

+0

鏈接的@@是一個通配符,它​​允許我使用相對鏈接,括號被替換爲 jjmil03 2015-03-25 04:21:40

回答

1

您不需要在模板中調用$question->user,您需要致電$question->getUser()。瞭解更多信息,請參閱visibility in PHP

+0

在這種情況下,用戶是一個對象。我需要一個名爲「id」的嵌套對象中的一段數據。當我做出你建議的改變時,我現在得到一個錯誤,說「(!)可捕捉的致命錯誤:類用戶的對象無法轉換爲字符串...」 所以有一個變量id用戶類,它位於問題類的內部,需要訪問。那有意義嗎? – jjmil03 2015-03-25 04:39:54

+0

是的,我的答案依然存在。你不能在課堂外引用' - > user',因爲它是私人的。錯誤在你的模板中。 – Evert 2015-03-25 05:11:50

+0

然後我不確定如何引用它?方法getID()是Method類中的一個公共方法,由User類使用。我不明白如何使用上面的建議來獲取用戶對象中的任何內容,因爲當我這樣做時,我收到一個錯誤。發佈 – jjmil03 2015-03-25 05:29:20