OOP类继承错误

时间:2013-08-04 13:36:44

标签: php mysql oop object mysqli

<?php

// Forum Configuration
define('DB_HOST','localhost'); // Database Hostname
define('DB_USER','root'); // Database Username
define('DB_PASSWORD',''); // Database Password
define('DB_NAME','ultraforum'); // Database Name
define('WEB_NAME','Website Name'); // Website Name
define('WEB_TITLE','Website Title'); // Website Title


// Do not modify anything under this line :)

class db {

    var $dbhost;
    var $dbuser;
    var $dbpassword;
    var $dbname;
    var $query;

    function connect() {
        $this->db =
            new mysqli($this->dbhost, $this->dbuser, $this->dbpassword, $this->dbname);
    }

    function __construct() {
        $this->dbhost = DB_HOST;
        $this->dbuser = DB_USER;
        $this->dbpassword = DB_PASSWORD;
        $this->dbname = DB_NAME;
    }
}

我的论坛类扩展了数据库

class forum extends db{

    public function __construct() {
        parent::__construct();
    }

    function displayInfo () {
        $this->forumInfo =
        $getInfo = $db->db->query("SELECT * FROM threads");
        while($getI = $getInfo->fetch_object()) {
            return $getI->Title;
        }
    }
}

使用第二个类,我想从我的mysqli数据库中获取所有线程。我从第一个类扩展它,因为我想要连接信息。这就是我实现类的方法:

 $ThreadInfo = new forum;
 $ThreadInfo->displayInfo();

但是我得到了

  

注意:未定义的属性:论坛:: $ db在第42行   致命错误:在第42行的非对象上调用成员函数query()

4 个答案:

答案 0 :(得分:1)

没有什么叫$ db - 你现在想要$ this作为它的一部分

 $getInfo = $this->db->query("SELECT * FROM threads");

答案 1 :(得分:1)

您的函数中未定义变量$db。将行更改为:

$this->db->query

答案 2 :(得分:0)

不要从数据库类扩展您的类。

这就是你做错了。 在各方面。

将$ db类的实例传递到论坛:

    class forum {
        private $db;

        public function __construct($db) { 
            $this->db = $db;
        } 

        function getInfo () {
        }



    }

此外,displayInfo()函数的代码都是错误的 你需要学习基本的mysqli操作之前开始其他课程。

答案 3 :(得分:-1)

首先,您的连接未实例化,您需要在db类中调用 connect()

function __construct() {
    $this->dbhost = DB_HOST;
    $this->dbuser = DB_USER;
    $this->dbpassword = DB_PASSWORD;
    $this->dbname = DB_NAME;
    $this->connect();
}

其次,您希望在类的范围内访问$ db:

$getInfo = $this->db->query("SELECT * FROM threads");