PHP读取配置文件类实例(可读取ini,yaml,xml等) |
|
本文标签:PHP,读取,配置文件 本文实例讲述了PHP读取配置文件类实例 。分享给大家供大家参考 。具体如下:
<?php
class Settings {
var $_settings = array ();
function get($var) {
$var = explode ( ., $var );
$result = $this->_settings;
foreach ( $var as $key ) {
if (! isset ( $result [$key] )) {
return false;
}
$result = $result [$key];
}
return $result;
}
function load() {
trigger_error ( Not yet implemented, E_USER_ERROR );
}
}
class Settings_PHP extends Settings {
function load($file) {
if (file_exists ( $file ) == false) {
return false;
}
// Include file
include ($file);
unset ( $file );
// Get declared variables
$vars = get_defined_vars ();
// Add to settings array
foreach ( $vars as $key => $val ) {
if ($key == this)
continue;
$this->_settings [$key] = $val;
}
}
}
class Settings_INI extends Settings {
function load($file) {
if (file_exists ( $file ) == false) {
return false;
}
$this->_settings = parse_ini_file ( $file, true );
}
}
class Settings_YAML extends Settings {
function load($file) {
if (file_exists ( $file ) == false) {
return false;
}
include (spyc.php);
$this->_settings = Spyc::YAMLLoad ( $file );
}
}
class Settings_XML extends Settings {
function load($file) {
if (file_exists ( $file ) == false) {
return false;
}
include (xmllib.php);
$xml = file_get_contents ( $file );
$data = XML_unserialize ( $xml );
$this->_settings = $data [settings];
}
}
?>
/** * 针对PHP的配置,如有配置文件 *config.php <?php $db = array(); // Enter your database name here: $db[name] = test; // Enter the hostname of your MySQL server: $db[host] = localhost; ?> //具体调用: include (settings.php); //原始环境假设每个类为单独的一个类名.php文件 // Load settings (PHP) $settings = new Settings_PHP; $settings->load(config.php); echo PHP: . $settings->get(db.host) . ; * */ 读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组 /** * ini例子:config.ini * [db] name = test host = localhost //调用例子: $settings = new Settings_INI; $settings->load(config.ini); echo INI: . $settings->get(db.host) . ; */ 读取XML文件,需要用到XML_PARSER,xmllib.php /** * XML例子:config.xml <?xml version="1.0" encoding="UTF-8"?> <settings> <db> <name>test</name> <host>localhost</host> </db> </settings> // Load settings (XML) $settings = New Settings_XML; $settings->load(config.xml); echo XML: . $settings->get(db.host) . ; * */ 读取YAML格式文件,使用YAML必须使用到SPYC这个库 /** YAML配置例子:config.yaml db: name: test host: localhost // Load settings (YAML) $settings = New Settings_YAML; $settings->load(config.yaml); echo YAML: . $settings->get(db.host) . ; */ 1. ini有点过时?? 所以:xml最好 。 希望本文所述对大家的php程序设计有所帮助 。 |