Можете да анализирате своя schema.xml с PHP simplexml.
$xml = simplexml_load_file('schema.xml');
$tableExists = 0 < count($xml->xpath("table[@phpName='$tableName']"));
Не забравяйте да филтрирате въведеното от потребителите за $tableName
, в противен случай е възможно да инжектирате собствена заявка в xpath. За да имате по-добра производителност, трябва да кеширате резултатите си.
Още по-добре би било, ако създадете хеш карта с всички таблици въз основа на вашия schema.xml
, кеширайте тази хеш карта и проверявайте всеки път.
$hashMap = $foo->getCache('tables');
if (!$hashMap) {
$xml = simplexml_load_file('schema.xml');
$tables = $xml->xpath("table");
foreach ($tables as $table) {
$hashMap[$table['phpName']] = true;
}
$foo->setCache('tables', $hashMap);
}
$tableExists = isset($hashMap[$tableName]);
В този случай всъщност не е необходимо да филтрирате въведеното от потребителя.