Der beste Weg, eine Include-Datei zu verwenden, die nur ein Array in PHP enthält
Frage
Kohana die Konfigurationsdateien wie folgt aussehen .. hier ist ein Beispiel für eine Datenbank-Konfigurationsdatei (vereinfacht)
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
Ich habe auch ein CMS, das die Verbindungsdetails will. Während das CMS einen anderen Benutzer verwendet (mit mehr Rechten), würde Ich mag die beste Art und Weise wissen, diese Datei zu schließen und die Daten aus ihm heraus (um wiederhole mich nicht für den Hostnamen und dbname).
Ich habe nicht von irgendwelchen eleganten Lösungen erdacht noch und noch nicht ausgegraben um Kohana zu sehen, wie sie es tut. Es ist spät Freitag hier so ist es wahrscheinlich wirklich für jeden offensichtlich, außer mir.
Update
Ich entschuldige mich, ich habe vergessen zu schließen, dass dies mit Kohana 3 !
Lösung
In Kohana v3, in der Kohana_Config_Reader
Klasse, Methode load()
:
$config = Arr::merge($config, require $file);
require $file
verwendet wird, um das Array in der Konfigurationsdatei zu laden.
Andere Tipps
Ich heruntergeladen Kohana und konnte nicht Dateien, die aussehen wie Ihr Beispiel, aber wenn Sie die aktuelle Version verwenden können Sie die Konfigurationsdateien wie folgt umfunktionieren:
<?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 sagt:
Außerdem ist es möglich, Werte von den darin enthaltenen Dateien zurückzukehren. Sie können nehmen den Wert der Anruf gehören, als würden Sie eine normale Funktion.
Lassen Sie uns nehmen Sie Beispielcode
<?php // test2.php
return array(
'dbhost' => 'localhost',
'user' => 'Tom_Jones'
);
und ein Skript, das test2.php
enthält<?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'];
druckt localhost
.
Die Dokumentation einige grundlegende Informationen enthält, wie Sie diese Konfigurationsdateien zugreifen. Also, wenn Sie die folgende in einer Datei namens db.php
in application/config
haben:
<?php defined('SYSPATH') or die('No direct script access.');
return array(
'host' => 'localhost',
'user' => 'Tom_Jones'
);
Sie würden sie wie folgt zugreifen:
$options = Kohana::config('db');
echo $options['user'];
echo $options['host'];
Oder wie folgt:
echo Kohana::config('db.user');
echo Kohana::config('db.host');
Oder wie folgt:
echo Kohana::config('db')->user;
echo Kohana::config('db')->host;