简单的实现源码:
<?php
class Settings{
public $_settings = array();
public function get($var){
$var = explode('.',$var);
$result = $this->_settings;
foreach($var as $key){
if(!isset($result[$key])){return false;}
$result = $result[$key];
}
return $result;
}
public function loadErr(){
trigger_error('Not yet implemented',E_USER_ERROR);
}
}
Class Settings_INI Extends Settings {
function load ($file) {
if (file_exists($file) == false) { return false; }
$this->_settings = parse_ini_file ($file, true);
}
}
/**
读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组
ini例子:
[db]
name = 'host=192.168.1.241'
ip = 'localhost'
host = 'port=5432'
dbname = 'dbname=hjhome'
login = 'user=hj password=hj'
*/
$settings = new Settings_INI;
$settings->load('config.ini');
$html = '<table border=1>';
$html.= '<tr><th>item</th><th>content</th>';
$html.= '<tr><td>' . 'name' . '</td><td>' . $settings->get('db.name') . '</td></tr>';
$html.= '<tr><td>' . 'ip' . '</td><td>' . $settings->get('db.ip') . '</td></tr>';
$html.= '<tr><td>' . 'host' . '</td><td>' . $settings->get('db.host') . '</td></tr>';
$html.= '<tr><td>' . 'dbname' . '</td><td>' . $settings->get('db.dbname') . '</td></tr>';
$html.= '<tr><td>' . 'login' . '</td><td>' . $settings->get('db.login') . '</td></tr>';
$html.= '</table>';
echo $html;
?>