Możesz parsować swój schema.xml za pomocą simplexml PHP.
$xml = simplexml_load_file('schema.xml');
$tableExists = 0 < count($xml->xpath("table[@phpName='$tableName']"));
Nie zapomnij filtrować danych wprowadzanych przez użytkowników dla $tableName
, w przeciwnym razie możliwe jest wstrzyknięcie własnego zapytania do xpath.Aby uzyskać lepszą wydajność, należy buforować wyniki.
Jeszcze lepiej byłoby, gdybyś utworzył mapę mieszania ze wszystkimi tabelami na podstawie Twojego schema.xml
, buforuj tę mapę mieszania i sprawdzaj ją za każdym razem.
$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]);
W tym przypadku nie jest konieczne filtrowanie danych wprowadzanych przez użytkownika.