http://forum.cmsmadesimple.de/viewtopic.php?pid=34202#p34202
Recht hat er.
Aber seine Aussage trifft auch noch auf folgendes zu - die Funktion cms_db_prefix wird 683 mal in den Quellen der CMS benannt und ausgeführt.
Sie soll den Tabellenprefix vor den Tabellennamen setzen.
Den Prefix kann der Anwender der CMS bei der Installation bestimmen.
Das macht er einmalig.
Was aber macht die Funktion genau ?
Sie ruft ihrerseits die Funktion GetDbPrefix.
Die soll nun den in cmsms()->dbprefix gehaltenen Prefix zurück geben wenn vorhanden oder den aus der config holen und dann zurück geben.
Schaut man sich aber GetDbPrefix() genauer an so fehlt da die Zuweisung an cmsms()->dbprefix so das bei Verwendung von cms_db_prefix tatsächlich jedes mal neben GetDbPrefix auch GetConfig aufgerufen wird.
Ich habe mal GetDbPrefix modifiziert mit einer hochzählbaren Variablen.
So wird diese Flut von Funktionsaufrufen auf der Home Seite von Cmsms 2.0 Beta 37 x ausgeführt.
Auch alles überflüssig wenn man den Prefix einmal als Konstante überführt hätte (siehe Thema der deutschen Fraktion).
Solche und noch ganz andere poofelige Fahrlässigkeiten sind überall im Quellcode zu finden.
Qualität und Qualitätskontrolle sind vollkommen unbekannt.
/**
* Returns the currently configured database prefix.
*
* @since 0.4
* @return string
*/
function cms_db_prefix() {
return cmsms()->GetDbPrefix();
}
Zum Test geänderte Funktion:
public function GetDbPrefix()
{ static $i;
if( $this->dbprefix ) return $this->dbprefix;
$i++;
$config = $this->GetConfig(); echo "Hallo ".$i;
return $config['db_prefix'];
}
Die insgesamt korrigierte Funktion:
public function GetDbPrefix()
{
if( $this->dbprefix ) return $this->dbprefix;
$config = $this->GetConfig();
$this->dbprefix = $config['db_prefix'];
return $config['db_prefix'];
}
Keine Kommentare:
Kommentar veröffentlichen