Лучший способ использовать включаемый файл, который просто включает массив в PHP
Вопрос
Конфигурационные файлы Kohana выглядят следующим образом..вот пример конфигурационного файла базы данных (упрощенный)
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
У меня также есть CMS, которая запрашивает информацию о подключении.Хотя CMS использует другого пользователя (с большими правами), я хотел бы знать, как наилучшим образом включить этот файл и извлечь из него данные (чтобы не повторяться для hostname и dbname).
Я еще не придумал никаких элегантных решений и еще не покопался в Kohana, чтобы посмотреть, как она это делает.Здесь уже поздний вечер пятницы, так что это, наверное, действительно очевидно для всех, кроме меня.
Обновить
Приношу свои извинения, я забыл указать, что это использование Кохана 3!
Решение
В Kohana v3, в Kohana_Config_Reader
класс, метод load()
:
$config = Arr::merge($config, require $file);
require $file
используется для загрузки массива в конфигурационный файл.
Другие советы
Я скачал Kohana и не смог найти файлы, похожие на ваш пример, но если вы используете текущую версию, вы могли бы переназначить конфигурационные файлы следующим образом:
<?php
// Your script
define('SYSPATH', 'true'); // So Kohana doesn't kill our script
$config = array();
include('path/to/system/config/database.php');
echo $config['default']['connection']['user']; // Echos database user
?>
http://docs.php.net/function.include говорит:
Кроме того, можно возвращать значения из включенных файлов.Вы можете принять значение вызова include, как при использовании обычной функции.
Давайте возьмем ваш пример кода
<?php // test2.php
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
и сценарий, который включает в себя test2.php
<?php
$cfg = include 'test2.php';
if ( !is_array($cfg) ) {
// ... add useful error handling here ...
}
// you might want to test the structure of $cfg
// before accessing specific elements
echo $cfg['dbhost'];
С принтами localhost
.
В Документация содержит некоторую базовую информацию о том, как вы получаете доступ к этим конфигурационным файлам.Итак, если у вас есть следующее в файле под названием db.php
в application/config
:
<?php defined('SYSPATH') or die('No direct script access.');
return array(
'host' => 'localhost',
'user' => 'Tom_Jones'
);
Вы бы получили к ним доступ следующим образом:
$options = Kohana::config('db');
echo $options['user'];
echo $options['host'];
Или вот так:
echo Kohana::config('db.user');
echo Kohana::config('db.host');
Или вот так:
echo Kohana::config('db')->user;
echo Kohana::config('db')->host;