Mam taki problem, stworzyłem sobie klasę która pobiera konkretne wartości z drzewa xml i zwraca je w postaci tablicy gdzie kluczem jest nodeName a wartością NodeValue. Używając domdocument. XML wygląda następująco:

  1. <?xml version="1.0" encoding="ISO-8859-2"?>
  2. <settings>
  3. <const>
  4. <inscript>true</inscript>
  5. <title>Template</title>
  6. </const>
  7. <meta>
  8. </meta>
  9. <db>
  10. <user>user</user>
  11. <pass>pass</pass>
  12. <host>host</host>
  13. <name>name</name>
  14. </db>
  15. <path>
  16. <style>
  17. <css>/Template/view/www/style/</css>
  18. <img>/Template/view/www/style/img</img>
  19. </style>
  20. </path>
  21. </settings>


Natomist klasa wygląda następująco

  1. class config {
  2.  
  3. private static $xml = "lib/config/settings.xml";
  4. private static $xmlRoot = "settings";
  5.  
  6. public static function loadConfig($value) {
  7. $domDocument = new DOMDocument();
  8.  
  9. $domDocument->load(self::$xml);
  10. $settings = $domDocument->getElementsByTagName(self::$xmlRoot);
  11.  
  12. foreach ($settings as $setting) {
  13. $configValue = $setting->getElementsByTagName($value)->item(0)->nodeValue;
  14. $configNode = $setting->getElementsByTagName($value)->item(0)->nodeName;
  15. }
  16.  
  17. $configValue = explode(' ', trim(preg_replace( '/\s+/', ' ', $configValue)));
  18. $configNode = explode(' ', trim(preg_replace( '/\s+/', ' ', $configNode)));
  19.  
  20. $configArray = array_combine($configNode, $configValue);
  21.  
  22. return $configArray;
  23. }
  24. }


Jeśli wywołam sobie config::loadConfig("css"); bardzo ładnie zwraca mi taka wartość jaka chce, ale od jakiegoś czasu próbuje też dodać taką funkcjonalność żeby jak zrobię np config::loadConfig("db"); zwróci mi tablice z wartościami np host=>'host', pass=>'pass' itd.

Trochę już nad tym siedzę i przyznam że jestem w kropce. Może ktoś ma jakieś wskazówki albo nawet rozwiązanie?