类中的未定义变量...但我定义它

时间:2014-06-20 01:24:44

标签: php mysql database

我正在尝试为我的数据库创建一个类:类结构如下

<?php
    require_once("config.php"); // include(Username, passowrd, server and databaseName)
    class MySQLDatabase{
        private $connection;

        function __construct(){
            $this->openConnection();
        }

        public function openConnection(){
            $this->$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PWD, DB_NAME);
            if(!$connection){
                die("Database connection failed: ".mysql_error);
            }
        }

    }
    $database = new MySQLDatabase();
    $db =&$database;

 ?>

然后我的第一步是检查这个天气是否有效。所以我将index.php文件编码如下

    <?php                   
require("../includes/database.php");                                       if(isset($database)){
echo "true";
}else{
echo "false";
}
    ?>

之后我运行程序,我得到如下错误。我无法理解原因。我谷歌它并没有明确的解决方案。是否有人可以帮助我理解为什么会发生这种情况以及如何解决这个问题?

  

(!)注意:未定义的变量:C:\ wamp \ www \ waytoits \ includes \ database.php

中的连接
on line 9
Call Stack
#   Time    Memory  Function    Location
1   0.0005  240792  {main}( )   ..\index.php:0
2   0.0008  249872  require( 'C:\wamp\www\waytoits\includes\database.php' ) ..\index.php:3
3   0.0013  250528  MySQLDatabase->__construct( )   ..\database.php:55
4   0.0013  250592  MySQLDatabase->openConnection( )    ..\database.php:15

( ! ) Fatal error: Cannot access empty property in C:\wamp\www\waytoits\includes\database.php on line 9
Call Stack
#   Time    Memory  Function    Location
1   0.0005  240792  {main}( )   ..\index.php:0
2   0.0008  249872  require( 'C:\wamp\www\waytoits\includes\database.php' ) ..\index.php:3
3   0.0013  250528  MySQLDatabase->__construct( )   ..\database.php:55
4   0.0013  250592  MySQLDatabase->openConnection( )    ..\database.php:15

2 个答案:

答案 0 :(得分:2)

您使用$this->$connection代替$this->connection。移除$中的connection符号,然后重试。

答案 1 :(得分:1)

$this::$connection(保留$)将引用静态变量。因为您有一个类变量,所以应该通过$this->connection

访问它

您还需要在if声明中使用相同的说明。