PHP OOP中的未定义属性错误消息

时间:2016-08-04 17:59:41

标签: php mysql mysqli

我正在使用PHP OOP开发一个自定义CMS,这实际上是我用面向对象编程创建的第一个项目,所以我没有那么多经验。基本上我有一个名为Site.class.php的类,它从MySQL数据库中的一个表中检索数据,如下所示:

    <?php 
class Site
{
    public $id,$site_name,$site_title,$site_url,$site_tags,$site_desc;
    public function __construct()
    {
        $this->db = new Connection();
        $this->db = $this->db->dbConnect();
    }
    public function getSite($name)
    {
        if(!empty($name))
        {
            $site = $this->db->prepare("select * from admins where site_name = ?");
            $site->bindParam(1,$name);
            $site->execute();
            while($row = $site->fetch())
            {
                $this->id           = $row['id'];
                $this->site_name    = $row['site_name'];
                $this->site_title   = $row['site_title'];
                $this->site_url     = $row['site_url'];
                $this->site_tags    = $row['site_tags'];
                $this->site_desc    = $row['site_desc'];
            }
        }
        else
        {
            header("Location: maint/php/includes/errors/005.php");
            exit();
        }
    }
    public function getID()
    {
        return $this->id;
    }
    public function getSiteName()
    {
        return $this->site_name;
    }
    public function getSiteTitle()
    {
        return $this->site_title;
    }
    public function getSiteUrl()
    {
        return $this->site_url;
    }
    public function getSiteTags()
    {
        return $this->site_tags;
    }
    public function getSiteDesc()
    {
        return $this->site_desc;
    }
}
?>

我已将此文件包含在另一个名为settings.php的文件中,并以这种方式调用它:

$siteSet = new Site();
$siteSet->getSite("Daygostar");

然后我尝试回复出这样的变量:

<div class="box-body">
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="usr">Site Name:</label>
                            <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteName; ?>">
                        </div>
                        <div class="form-group">
                            <label for="usr">User URL:</label>
                            <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteUrl; ?>">
                        </div>
                    </div>
                </div>
            </div>

但问题是每当我调用此文件时,都会收到以下错误消息:

  

未定义的属性:Site :: $ getSiteName

     

未定义的属性:Site :: $ getSiteUrl

我不知道出了什么问题,因为我已正确编码了所有内容!所以如果你知道如何解决这个问题请告诉我,我真的很感激..提前谢谢。

1 个答案:

答案 0 :(得分:2)

这些都是方法。您需要在它们的末尾添加()以调用该方法。

<div class="box-body">
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="usr">Site Name:</label>
                            <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteName(); ?>">
                        </div>
                        <div class="form-group">
                            <label for="usr">User URL:</label>
                            <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteUrl(); ?>">
                        </div>
                    </div>
                </div>
            </div>