嵌套类错误
我想在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不出来,并链接到“测试”上面。我不确定我是否在做某些语法错误的或什么。如果有人能帮助我,我会很感激。
这是作业。不要试图克服任何人。再次感谢。
您不需要在模板中调用$question->user
,您需要致电$question->getUser()
。了解更多信息,请参阅visibility in PHP。
在这种情况下,用户是一个对象。我需要一个名为“id”的嵌套对象中的一段数据。当我做出你建议的改变时,我现在得到一个错误,说“(!)可捕捉的致命错误:类用户的对象无法转换为字符串...” 所以有一个变量id用户类,它位于问题类的内部,需要访问。那有意义吗? – jjmil03 2015-03-25 04:39:54
是的,我的答案依然存在。你不能在课堂外引用' - > user',因为它是私人的。错误在你的模板中。 – Evert 2015-03-25 05:11:50
然后我不确定如何引用它?方法getID()是Method类中的一个公共方法,由User类使用。我不明白如何使用上面的建议来获取用户对象中的任何内容,因为当我这样做时,我收到一个错误。发布 – jjmil03 2015-03-25 05:29:20
链接的@@是一个通配符,它允许我使用相对链接,括号被替换为
jjmil03
2015-03-25 04:21:40