У меня есть класс, который расширяет PDO, чтобы дать ему возможность извлекать конфигурацию из XML-файла. К сожалению, наш хостинг-провайдер отключил SimpleXML, поэтому мне нужно реорганизовать мой код, чтобы использовать Dom, который доступен.
Я использую следующий код:
class xmlPDO extends PDO
{
public function __construct($xml_uri){
$xml = simplexml_load_file($xml_uri);
$dsn_template = "%s:host=%s; dbname=%s";
$dsn = sprintf($dsn_template, $xml->dsn->driver, $xml->dsn->host, $xml->dsn->dbname);
parent::__construct($dsn, $xml->username, $xml->password);
}
}
Чтобы прочитать следующий XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database [
<!ELEMENT database (name, description, dsn, username, password)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT dsn (driver, dbname, host)>
<!ELEMENT driver (#PCDATA)>
<!ELEMENT dbname (#PCDATA)>
<!ELEMENT host (#PCDATA)>
<!ELEMENT username (#PCDATA)>
<!ELEMENT password (#PCDATA)>
]>
<database>
<name>Test Database</name>
<description>Localhost test database, use only for testing</description>
<dsn>
<driver>mysql</driver>
<dbname>test</dbname>
<host>localhost</host>
</dsn>
<username>user</username>
<password>test</password>
</database>
Я просматриваю документацию php.net, и мне очень трудно понять, как я должен это делать. Кажется, я не могу привести четкие примеры кода для извлечения таких данных.