嵌套类错误

时间:2015-03-25 04:18:49

标签: php class private

我试图在PHP中将一个类嵌套在另一个类中,并通过HTML显示数据。我有一个问题类,在该类的内部,我创建了一个User对象。用户对象包含创建问题的用户的信息。由于某种原因,我得到"(!)致命错误:无法访问私有财产问题:: $ 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;
    }

两者都是Model的子类:

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没有出来并链接到&#34; test&#34;以上。我不确定我是在做一些语法错误还是什么。如果有人可以帮助我,我会很感激。

这是作业。不试图克服任何人。再次感谢。

1 个答案:

答案 0 :(得分:1)

您需要致电$question->user,而不是在模板中调用$question->getUser()。有关详细信息,请了解visibility in PHP