2

我正在尝试使用将主机等作为变量的 php 创建一个 db 类。我无法坚持初始化值,我不知道为什么。当我在将它们设置为公共的顶部初始化它们时,它工作正常,但是当我尝试在构造函数中初始化它们时它不起作用。

    class Database {

    public $dbHost;
    public $dbUser;
    public $dbPass;
    public $dbName;

    public $db;

    public function __construct($Host, $User, $Pass, $Name){ 
        $dbHost = $Host;
        $dbUser = $User;
        $dbPass = $Pass;
        $dbName = $Name;
        $this->dbConnect();
    }

    public function dbConnect(){
        echo $dbPass;
        $this->db = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName);

        /* check connection */
        if (mysqli_connect_errno()){
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }else{
            //echo 'connection made';
        }
    }
4

5 回答 5

6

您没有在构造函数中正确初始化它们;尝试:

$this->dbHost = $Host;

您当前正在做的是初始化一个名为 $dbHost 的局部变量,其作用域只是构造函数本身。

于 2012-10-23T18:04:43.620 回答
2

您必须使用$this来访问类中的实例变量,例如$this->dbHost = $Host;

于 2012-10-23T18:05:30.250 回答
2

改变这个:

public function __construct($Host, $User, $Pass, $Name){ 
        $dbHost = $Host;
        $dbUser = $User;
        $dbPass = $Pass;
        $dbName = $Name;
        $this->dbConnect();
    }

对此:

public function __construct($Host, $User, $Pass, $Name){ 
        $this->dbHost = $Host;
        $this->dbUser = $User;
        $this->dbPass = $Pass;
        $this->dbName = $Name;
        $this->dbConnect();
    }
于 2012-10-23T18:05:52.243 回答
1

尝试这个:

public function __construct($Host, $User, $Pass, $Name){ 
        $this->dbHost = $Host;
        $this->dbUser = $User;
        $this->dbPass = $Pass;
        $this->dbName = $Name;
        $this->dbConnect();
    }
于 2012-10-23T18:06:30.037 回答
0

用这个怎么样->

public function __construct($Host, $User, $Pass, $Name){ 
    $this->dbHost = $Host;
    $this->dbUser = $User;
    $this->dbPass = $Pass;
    $this->dbName = $Name;
    $this->dbConnect();
}
于 2012-10-23T18:05:52.960 回答