у меня есть файл 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, общие пути и т. д.
Как я могу сделать эту работу? Я что-то упускаю? Есть ли другой способ, которым я должен делать это?
Кто-нибудь знает хороший учебник или пример для этого?
Спасибо за прочтение.
global
это зло, пожалуйста, не используйте его.
Я бы использовал константы для параметров базы данных:
define('DB_NAME', 'MyDatabase');
define('DB_USER', 'root');
define('DB_PASSWORD', '1234');
Затем используйте require
вместо include
для вашего config.php. Ваша заявка не должна продолжаться без нее.
Вы забыли символ «>» и должны использовать запятую вместо точки с запятой для разделения пар ключ-значение:
<?php
// Config File
return array(
//database connections
'db_type' => 'mysql',
'db_host' => 'localhost',
'db_user' => 'user',
'db_pass' => 'pass',
'db_name' => 'name',
);