Sadece PHP bir dizi içeren bir include dosyasını kullanmak için en iyi yolu

4 Cevap php

Kohana config dosyaları bu gibi bakmak .. Burada bir veritabanı yapılandırma dosyası bir örnektir (basitleştirilmiş)

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

Ben de bağlantı detaylarını istediği bir CMS var. CMS (daha fazla haklara sahip) farklı bir kullanıcı kullanır iken, ben bu dosyayı içerir ve (hostname ve dbname için kendimi tekrar etmeyecek şekilde) bunun dışında veri almak için en iyi yolu bilmek istiyorum.

Ben henüz zarif çözümler kadar düşünce değil ve henüz bunu nasıl yaptığını görmek için Kohana etrafında kazılan değil. O yüzden muhtemelen benim dışında herkes için gerçekten çok bariz burada geç Cuma.

Update

Özür dilerim, ben bunu kullanarak olduğunu eklemeyi unutmuşum Kohana 3!

4 Cevap

Kohana v3, in Kohana_Config_Reader sınıf, yöntem load(),

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

require $file yapılandırma dosyasında dizi yüklemek için kullanılır.

Ben Kohana ve örnek gibi görünebilir değil indirilen dosyalar, ancak güncel sürümünü kullanıyorsanız, bu gibi yapılandırma dosyaları başka amaçlarla olabilir:

<?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 diyor ki:

Also, it's possible to return values from included files. You can take the value of the include call as you would a normal function.

Senin kod örneği alalım

<?php // test2.php
return array(
  'dbhost' => 'localhost',
  'user'   => 'Tom_Jones'
);

ve test2.php içeren bir komut dosyası

<?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'];

baskılar localhost.

documentation bu yapılandırma dosyalarına erişmek konusunda bazı temel bilgileri içerir. Yani db.php denilen bir dosyaya aşağıdaki varsa application/config:

<?php defined('SYSPATH') or die('No direct script access.');

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

Onları bu şekilde erişmek istiyorum:

$options = Kohana::config('db');
echo $options['user'];
echo $options['host'];

Ya da bunun gibi:

echo Kohana::config('db.user');
echo Kohana::config('db.host');

Ya da bunun gibi:

echo Kohana::config('db')->user;
echo Kohana::config('db')->host;