【发布时间】:2016-07-10 09:54:09
【问题描述】:
我正在做一个简单的项目,我正在使用 PHP Object Oriented。基本上我有一个类,其中包含有关如何从 MySQL 数据库获取数据并在页面上显示它们的信息。这个类称为admin.php,如下所示:
<?php
class Admin{
private $db,$username,$password,$id,$group,$Datetime,$msg;
public function __construct()
{
$this->db = new Connection();
$this->db = $this->db->dbConnect();
}
public function getAdmin($name)
{
if(!empty($name))
{
$adm = $this->db->prepare("select * from admins where username=?");
$adm->bindParam(1,$name);
$adm->execute();
while($row = $adm->fetch())
{
$this->id = $row['id'];
$this->username = $row['username'];
$this->password = $row['password'];
$this->group = $row['group'];
$this->Datetime = $row['date_joined'];
$this->msg = $row['welcome_message'];
}
}
}
public function getID()
{
return $this->id;
}
public function getUsername()
{
return $this->username;
}
public function getPassword()
{
return $this->password;
}
public function getGroup()
{
return $this->group;
}
public function gtDate()
{
return $this->Datetime;
}
public function welcomeMessage()
{
return $this->msg;
}
}
?>
然后在另一个名为 dashboard.php 的页面上,我已经包含了这个类文件并编码了这个:
<?php if ($dataSet->welcomeMessage()== 0){
echo "
<li class='dropdown messages-menu'>
<!-- Menu toggle button -->
<a href='#' class='dropdown-toggle' data-toggle='dropdown'>
<i class='fa fa-envelope-o'></i>
<span class='label label-success'>1</span>
</a>
<ul class='dropdown-menu'>
<li class='header'>You have one new message</li>
<li>
<!-- inner menu: contains the messages -->
<ul class='menu'>
<li><!-- start message -->
<a href='message.php?msg=".$dataSet->msg();."'>
<div class='pull-left'>
<!-- User Image -->
<img src='dist/img/user2-160x160.jpg' class='img-circle' alt='User Image'>
</div>
<!-- Message title and timestamp -->
<h4>
Support Team
<small><i class='fa fa-clock-o'></i>Just now</small>
</h4>
<!-- The message -->
<p>Welcome to your admin panel</p>
</a>
</li>
<!-- end message -->
</ul>
<!-- /.menu -->
</li>";
}
?>
但是每当我运行它时,我都会收到以下错误消息:
解析错误:语法错误,意外'.'在 dasboard.php 的第 15 行
这是仪表板文件的第 15 行:
<a href='message.php?msg=".$dataSet->msg();."'>
很确定这一定与在我回显语句时错误地在 html 标记中连接和组合类方法有关。
那么正确的方法是什么?
【问题讨论】:
-
然后它会返回一个致命错误:调用未定义的方法 Admin::msg() !但是,正如您在代码中看到的那样,它的定义是正确的
-
我们可以看到它没有定义,你可能想要调用名为
welcomeMessage()的方法。还有为什么在 PHP 引号中回显 HTML,只输出纯 HTML。还有一件事:这个类包含不同职责的代码。您应该区分这些问题。 -
错误出现在
;.。另外,msg是私有属性,而不是方法。