Поэтому у меня есть PHP-файл, который я использую для определения всех моих констант, но теперь хочу использовать гибкость использования XML.
Пример файла конфигурации PHP
define("LOGIN_URL", "secure_login.php"); define("REDIRECT", "redirect.php"); define("MAPPED_VALUE_GREEN", "object_green"); define("MAPPED_VALUE_KEY", "object_key_12345");
Я собираюсь сделать следующее:
<scriptNameConfig> <urls> <url alias="LOGIN_URL" scriptname="secure_login.php" location="optional/path/to/file"/> <url alias="REDIRECTL" scriptname="redirect.php" location="optional/path/to/file"/> </urls> <mapping> <mapped name="MAPPED_VALUE_GREEN" data="object_green"/> <mapped name="MAPPED_VALUE_KEY" data="object_key_12345"/> </mapping> </scriptNameConfig>
Теперь это нормально, но я хочу использовать XPATH для извлечения значений из этого типа конфигурационного файла, но хотелось бы, чтобы он был достаточно динамичным, поэтому мне не нужно жестко программировать функции
Это мой базовый класс
class ParseXMLConfig { protected $xml; public function __construct($xml) { if(is_file($xml)) { $this->xml = simplexml_load_file($xml); } else { $this->xml = simplexml_load_string($xml); } } }
И я расширяю его так
class ParseURLS extends ParseXMLConfig { public function getUrlArr($url_alias) { $attr = false; $el = $this->xml->xpath("//url[@alias='$url_alias']"); if($el && count($el) === 1) { $attr = (array) $el[0]->attributes(); $attr = $attr['@attributes']; } return $attr; // this will return the element array with all attributes } }
Но проблема в том, что если я хочу представить новое значение в файле confie, я должен добавить какую-то функцию для XPATH для ее анализа. хотел знать, есть ли у кого-нибудь идея о том, как делать это родовое / динамическое, поэтому добавление / изменение или удаление элементов / атрибутов в файле конфигурации XML было бы проще и менее жестким.
Спасибо за любые советы / примеры / код / идеи, -Phill