Лучший способ использовать включаемый файл, который просто включает массив в PHP

StackOverflow https://stackoverflow.com/questions/2069901

  •  20-09-2019
  •  | 
  •  

Вопрос

Конфигурационные файлы 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top