Je kunt je schema.xml ontleden met PHP's simplexml.
$xml = simplexml_load_file('schema.xml');
$tableExists = 0 < count($xml->xpath("table[@phpName='$tableName']"));
Vergeet niet de invoer van gebruikers te filteren op $tableName
, anders is het mogelijk om een eigen zoekopdracht in xpath te injecteren. Voor betere prestaties moet u uw resultaten in de cache plaatsen.
Nog beter zou zijn als u een hash-map maakt met alle tabellen op basis van uw schema.xml
, cache deze hash-kaart en controleer deze elke keer.
$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]);
In dit geval is het niet echt nodig om de invoer van de gebruiker te filteren.