PHP глобальные конфигурационные файлы

у меня есть файл config.php, который содержит:

<?php
// Config File

return array(
//database connections
'db_type' = 'mysql';
'db_host' = 'localhost';
'db_user' = 'user';
'db_pass' = 'pass';
'db_name' = 'name';

);

Затем я называю это в моем файле инициализации (я пробовал это с и без GLOBAL)

if (file_exists(ROOT . DS . 'app' . DS . 'core' . DS . 'config.php'))
{
$config = include('config.php');
GLOBAL $config;
}

и в моем классе базы данных я пытался использовать 2 различными способами

1.

private $db_type = $config['db_type'];
private $db_host = $config['db_host'];
private $db_user = $config['db_user'];
private $db_pass = $config['db_pass'];
private $db_name = $config['db_name'];

2.

function __construct() {
global $config;
$this->db_type = $config['db_type'];
$this->db_host = $config['db_host'];
$this->db_user = $config['db_user'];
$this->db_pass = $config['db_pass'];
$this->db_name = $config['db_name'];
}

способ 1 говорит о непредвиденных $ config, способ 2 заставляет базу данных выдать ошибку «не удалось найти драйвер»

Мой конфигурационный файл содержит не только конфигурацию базы данных, но и такие вещи, как sitename, root url, общие пути и т. д.

Как я могу сделать эту работу? Я что-то упускаю? Есть ли другой способ, которым я должен делать это?

Кто-нибудь знает хороший учебник или пример для этого?

Спасибо за прочтение.

0

Решение

global это зло, пожалуйста, не используйте его.

Я бы использовал константы для параметров базы данных:

define('DB_NAME', 'MyDatabase');
define('DB_USER', 'root');
define('DB_PASSWORD', '1234');

Затем используйте require вместо include для вашего config.php. Ваша заявка не должна продолжаться без нее.

1

Другие решения

Вы забыли символ «>» и должны использовать запятую вместо точки с запятой для разделения пар ключ-значение:

<?php
// Config File

return array(
//database connections
'db_type' => 'mysql',
'db_host' => 'localhost',
'db_user' => 'user',
'db_pass' => 'pass',
'db_name' => 'name',

);
2