Лучший способ использовать включаемый файл, который просто включает в себя массив в PHP - PullRequest
0 голосов
/ 15 января 2010

Конфигурационные файлы Kohana выглядят так ... вот пример конфигурационного файла базы данных (упрощенно)

return array(
    'dbhost' => 'localhost',
    'user'   => 'Tom_Jones'
);

У меня также есть CMS, которая хочет детали подключения. Хотя в CMS используется другой пользователь (с большими правами), я хотел бы знать, как лучше всего включить этот файл и извлечь из него данные (чтобы не повторяться для имени хоста и имени dbname).

Я еще не придумал ни одного изящного решения и пока не копался в Кохане, чтобы посмотреть, как он это делает. Здесь поздняя пятница, так что, вероятно, это действительно очевидно для всех, кроме меня.

Обновление

Мои извинения, я забыл включить, что это использует Кохана 3 !

Ответы [ 4 ]

1 голос
/ 15 января 2010

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.

1 голос
/ 15 января 2010

В Kohana v3, в классе Kohana_Config_Reader, метод load():

$config = Arr::merge($config, require $file);

require $file используется для загрузки массива в файл конфигурации.

1 голос
/ 15 января 2010

Я скачал 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
?>
0 голосов
/ 16 марта 2010

Документация содержит основную информацию о том, как вы получаете доступ к этим файлам конфигурации. Так что если у вас есть следующее в файле с именем 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;
...