Heim  >  Artikel  >  Backend-Entwicklung  >  PHP liest die Klasseninstanz der Konfigurationsdatei

PHP liest die Klasseninstanz der Konfigurationsdatei

墨辰丷
墨辰丷Original
2018-06-08 13:44:194243Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für PHP-Lesekonfigurationsdateien vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Die Details lauten wie folgt:

<?php 
class Settings { 
 var $_settings = array (); 
 function get($var) { 
 $var = explode ( &#39;.&#39;, $var ); 
 $result = $this->_settings; 
 foreach ( $var as $key ) { 
  if (! isset ( $result [$key] )) { 
  return false; 
  }  
  $result = $result [$key]; 
 }  
 return $result; 
 } 
 function load() { 
 trigger_error ( &#39;Not yet implemented&#39;, 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 == &#39;this&#39;) 
  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 (&#39;spyc.php&#39;); 
 $this->_settings = Spyc::YAMLLoad ( $file ); 
 } 
} 
class Settings_XML extends Settings { 
 function load($file) { 
 if (file_exists ( $file ) == false) { 
  return false; 
 } 
 include (&#39;xmllib.php&#39;); 
 $xml = file_get_contents ( $file ); 
 $data = XML_unserialize ( $xml ); 
 $this->_settings = $data [&#39;settings&#39;]; 
 } 
} 
?>

Konfigurationsbeispiel:

/** 
* 针对PHP的配置,如有配置文件 
*config.php 
<?php 
$db = array(); 
// Enter your database name here: 
$db[&#39;name&#39;] = &#39;test&#39;; 
// Enter the hostname of your MySQL server: 
$db[&#39;host&#39;] = &#39;localhost&#39;; 
?> 
//具体调用: 
include (&#39;settings.php&#39;); //原始环境假设每个类为单独的一个类名.php文件 
// Load settings (PHP) 
$settings = new Settings_PHP; 
$settings->load(&#39;config.php&#39;); 
echo &#39;PHP: &#39; . $settings->get(&#39;db.host&#39;) . &#39;&#39;; 
* 
*/ 
 读取INI文件,主要用到parser_ini_file函数,该函数返回一个数组,如第二个参数为true时则返回多维数组
/** 
* ini例子:config.ini 
* 
[db] 
name = test 
host = localhost 
//调用例子: 
$settings = new Settings_INI; 
$settings->load(&#39;config.ini&#39;); 
echo &#39;INI: &#39; . $settings->get(&#39;db.host&#39;) . &#39;&#39;; 
*/ 
 读取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(&#39;config.xml&#39;); 
echo &#39;XML: &#39; . $settings->get(&#39;db.host&#39;) . &#39;&#39;; 
* 
*/ 
 读取YAML格式文件,使用YAML必须使用到SPYC这个库
/** 
YAML配置例子:config.yaml 
db: 
 name: test 
 host: localhost 
// Load settings (YAML) 
$settings = New Settings_YAML; 
$settings->load(&#39;config.yaml&#39;); 
echo &#39;YAML: &#39; . $settings->get(&#39;db.host&#39;) . &#39;&#39;; 
*/

Zusammenfassung: Das ist es für diesen Artikel Der gesamte Inhalt des Artikels soll für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

PHP-Dateioperationen und -Algorithmen

PHP-umkehrbare Verschlüsselungsmethoden und -prinzipien

PHP-String-Traversal- und Interception-Betriebsfähigkeiten

Das obige ist der detaillierte Inhalt vonPHP liest die Klasseninstanz der Konfigurationsdatei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn