1

我正在尝试制作一个 CMS,但我一直在使用 PHP 中的类。

我有这个小连接类,我不知道为什么它不起作用。它给了我这个错误:

注意:未定义变量:第 4 行 C:\Users\eha\Desktop\Carlos' Stuff\xampp\htdocs\test\layout\system\class.php 中的 mysqli

致命错误:无法访问第 4 行 C:\Users\eha\Desktop\Carlos' Stuff\xampp\htdocs\test\layout\system\class.php 中的空属性

class server_connect {
    function __construct($host, $user, $password, $database) {
        $this->$mysqli = new mysqli($host, $user, $password, $database);
        if ($mysqli->connect_error) {
            die('Connect Error (' . $mysqli->connect_errno . ') '
                    . $mysqli->connect_error);
        }
    }
    protected $mysqli = NULL;
    protected function set_connection(&$serverconnect){
        $this->$mysqli = $serverconnect;
    }   
}

class site_manager extends server_connect {

好的,现在我在调用父元素 $mysqli 时得到了它的语法,我在做 parent::$mysqli,它告诉我它是一个未声明的变量

class site_manager extends server_connect {
function __construct(&$conect){
    parent::set_connection($conect);
}
public function getContent($page , $sub){   
    if($page == 'home' || ($page != 'home' && $sub ==NULL))
        $qry = "SELECT * FROM public WHERE section = ?";
    else
        $qry = "SELECT * FROM public WHERE section = ? AND subsection = ?";
    $stmt = parent::$mysqli->stmt_init();
4

3 回答 3

3

当您尝试访问实例变量时,您需要这样做:

$this->mysqli

你正在这样做

$this->$mysqli
于 2013-05-06T19:55:23.210 回答
2

你有几个问题:首先,你正在使用$this->$variable; 它应该是$this->variable。其次,在您使用的一行上$this->$mysqli,然后在下一行省略$this->, 写作$mysqli. 你需要保留$this->;在方法的范围内,$this->variable并且$variable是两个不同的变量。

于 2013-05-06T19:56:25.293 回答
2

你的 OOP 写作的语法是错误的。你需要使用$this->mysqli而不是$this->$mysqli

完整的代码修复:

class server_connect {
protected $mysqli = NULL;
    function __construct($host, $user, $password, $database) {
        $this->mysqli = new mysqli($host, $user, $password, $database);
        if ($this->mysqli->connect_error) {
            die('Connect Error (' . $this->mysqli->connect_errno . ') '
                    . $this->mysqli->connect_error);
        }
    }
    protected function set_connection(&$serverconnect){
        $this->mysqli = $serverconnect;
    }   
}

class site_manager extends server_connect {
于 2013-05-06T19:56:34.843 回答