buonasera! 
sto realizzando un cms e per semplificare la vita agli sviluppatori dei futuri moduli, sto implementando un metodo, nella classe che gestisce il database, il quale non fa altro che impostare in automatico il suffisso delle tabelle mysql scelto in fase di installazione del cms
se quindi lo sviluppatore crea la query
codice:
select * from tabella where id=10
dove il suffisso è pippo
il metodo del cms non farà altro che restituire
codice:
select * from pippo_tabella where id=10
A tal fine ho quindi realizzato il metodo che avendo già disponibile l' elenco delle tabelle nel database, non fa altro che verificare anche che i termini trovati tramite reg exp corrispondano realmente al nome di una tabella esistente.
è corretto secondo voi ciò che ho scritto?
spero di essere stato abbastanza chiaro
Codice PHP:
private function set_suffix($q_str){
$patterns=array(
'/into[\s][\`]?(.*)[\`]?[\s]/USmi',
'/from[\s][\`]?(.*)[\`]?[\s]/USmi',
'/join[\s][\`]?(.*)[\`]?[\s]/USmi',
'/[\,]?[\s](.*)as[\s]/Usmi'
);
foreach($patterns as $patt){
preg_match_all($patt,$q_str,$results);
if(isset($results[0]) && !empty($results[0])){
foreach ($results[0] as $r_key=>$res){
if(in_array($results[1][$r_key],$this->__tables)){
$block=$res;
$tag=$results[1][$r_key];
$rep=$this->__suffix.$tag;
$q_str=str_replace(
$block,
str_replace($tag,$rep,$block)
$q_str;
);
}
}
}
}
return $q_str;
}