我建議級聯INI文件:
$conf_dir = dirname(__FILE__);
$config = array_merge_recursive(
parse_ini_file($conf_dir.'base.ini'),
parse_ini_file($conf_dir.'client.ini')
);
的好處是可讀性,執行無力(我想鎖定下來的東西,可以是),你可以在git
跟蹤base
INI(或任何你使用)而不是客戶端。有一些缺點,但這就是生活。可以肯定,感覺更乾淨,但它們不會比.php
更快。
如果你想消除任何冗餘執行(聽,任何「性能優勢」仍然有其「利」),系列化:
<?php
define('CACHE_DIR', '/tmp/');
// where 'http' is a path part that directly follows the app root, and will always
// be below where this file is called from.
$ini_cache = CACHE_DIR.'config.ser';
if(!file_exists($ini_cache)) {
// Build your config in any way you wish.
$conf_dir = dirname(__FILE__);
$config = array_merge_recursive(
parse_ini_file($conf_dir.'base.ini'),
parse_ini_file($conf_dir.'client.ini')
);
// Store it serialized
file_put_contents($ini_cache, serialize($config));
} else {
$config = deserialize(file_get_contents($ini_cache));
}
你可以得到這更有創意,但本質上,這允許您以任何您希望的方式存儲/生成您的配置。如果你想不必刪除每一個變化的序列緩存,你可以添加一個atime
檢查:
<?php
define('CACHE_DIR', '/tmp/');
// where 'http' is a path part that directly follows the app root, and will always
// be below where this file is called from.
$ini_cache = CACHE_DIR.'config.ser';
$conf_dir = dirname(__FILE__);
$config = array();
if(file_exists($ini_cache)) {
$client_stat = stat($conf_dir.'client.ini');
$cache_stat = stat($ini_cache);
if($client_stat['atime'] < $cache_stat['atime']) {
$config = deserialize(file_get_contents($ini_cache));
}
}
if(empty($config)) {
// Build your config in any way you wish.
$config = array_merge_recursive(
parse_ini_file($conf_dir.'base.ini'),
parse_ini_file($conf_dir.'client.ini')
);
// Store it serialized
file_put_contents($ini_cache, serialize($config));
}
無論使用哪種序列化方法,可以使用以往$config
生成方案,你喜歡什麼,如果你使用PHP ,你甚至可以獲得真正的創意/複雜,並且緩存命中到頁面將是微不足道的。
我認爲不是使用常量,而是創建模板要容易得多。另外,您必須選擇將其修改爲行 – Ibu
我實際上正在考慮將其用作我的模板系統的一部分。 – user3154948