php - 从公共(public)范围获取变量以连接数据库第 2 部分

标签 php sql mysql

$hostname['application'] = '127.0.0.1';
$username['application'] = 'root';
$password['application'] = 'root';
$database['application'] = 'band';
$dbdriver['application'] = 'mysql';

class database
{
    private $hostname;
    private $username;
    private $password;
    protected $database;
    private $dbdriver;

    function __construct( $database )
    {

    }
}

$db = new database( 'application' );

仍然是与以前相同的问题,但我仍然想了解如何制作一个简单的 pdo 包装器。 我们可以通过仅知道 $x['database'] 来获取 $hostname['application'] 等吗?我的意思是我想做的是把 getting a variable from a public scope to connect database 。但我正在尝试解决不同的问题。

感谢您的关注。

最佳答案

尝试依赖注入(inject):

$hostname['application'] = '127.0.0.1';
$username['application'] = 'root';
$password['application'] = 'root';
$database['application'] = 'band';
$dbdriver['application'] = 'mysql';

class database {
    private $hostname;
    private $username;
    private $password;
    protected $database;
    private $dbdriver;

    function __construct( $hostname, $username, $password, $database, $driver = 'mysql' ) {
        $this->hostname = $hostname;
        $this->username = $username;
        $this->password = $password;
        $this->database = $database;
        $this->driver = $driver;
    }
}

$dbInstance = new database( $hostname['application'], $username['application'], $password['application'], $database['application'] );

作为一般规则,您不应该使用全局变量。如果您在函数或类方法中的某个位置需要变量,您应该显式地将它们作为参数“注入(inject)”到您的函数/方法中。

关于php - 从公共(public)范围获取变量以连接数据库第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930889/

相关文章:

php - 使用 array_filter 或 array_walk 从数组中删除项目

sql - 如何在一列中加入值? (SQL Server 2008R2)

mysql - STR_TO_DATE 和 LOAD DATA INFILE 格式问题

MYSQL:从查询更新值

MySQL 不接受此过程。你能帮忙吗?

php - 带有 mysql 的网络套接字

php - SonataAdmin - 找不到我要构建的自定义 block

mysql - 如何使用mysql select查询获取下一行中的后续列总数

mysql - 1张 table ,而是两张 table 。类似于 mysql 表的磁盘分区

php - 过滤以自定义选定字符开头的值的数组