使用其他文件中的变量在 PHP 类中使用

Sai*_*son 6 php

我有来自名为:的文件的数据库凭据变量config.php

$db_server = 'localhost';
$db_user = 'username';
$db_password = 'secret'
$db_name = 'dbname';
Run Code Online (Sandbox Code Playgroud)

现在,我在 /class 文件夹下有一个 PHP 类,它非常适合 CRUD 过程。命名MysqlCrud.class.php

class Database {

    private $db_host = 'localhost';  // Change as required
    private $db_user = 'username';  // Change as required
    private $db_pass = 'secret';  // Change as required
    private $db_name = 'dbname';    // Change as required

}
Run Code Online (Sandbox Code Playgroud)

但是,我想使用来自 的集中变量config.php。这就是为什么我添加一些这样的行:

include('../config.php');
class Database {

    global $db_server;
    global $db_user;
    global $db_password;
    global $db_name;

    private $db_host = $db_server;  // Change as required
    private $db_user = $db_user;  // Change as required
    private $db_pass = $db_password;  // Change as required
    private $db_name = $db_name;    // Change as required

}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

Parse error: syntax error, unexpected 'global' (T_GLOBAL), expecting function (T_FUNCTION) in /home/*** on line **
Run Code Online (Sandbox Code Playgroud)

为什么我不能在 Database 类中使用 config.php 文件中的变量?我在这里做错了什么?谢谢。

br3*_*3nt 4

您选择使用的方法的问题在于该类不再可重用。任何时候实例化该类时Database,它都会使用全局变量。

我更倾向于这样设置:

数据库.php

class Database {

  private $host;
  private $db_name;
  private $username;
  private $password;

  function __construct($host, $db_name, $username, $password) {
    $this->host = $host;
    $this->db_name = $db_name;
    $this->username = $username;
    $this->password = $password;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在文件中使用该类Database

include('../config.php');

$db = new Database($db_server, $db_name, $db_user, $db_password);
Run Code Online (Sandbox Code Playgroud)