An dem Code ist einiges kritikwürdig.
Deswegen habe ich ihn auch gepostet. Nur aus Fehlern lernt man!
Erstens: Die Datenbank-Klasse sollte von keinerlei Template-System wissen.
Sehe ich vollkommen auch so! Jede Klasse sollte möglichst ohne den Einfluss anderer Klassen arbeiten. Könntest du mir bitte an einem Code-Beispiel zeigen, wie du bspw. eine fehlgeschlagene Verbindung aus einem DB-Objekt an ein ErrorHandling-Objekt senden würdest, damit dies die passende Aktion durchführt.
Zweitens: Die Datenbank-Klasse sollte keinen Aufruf "start()" erfordern.
Gut da gehe ich mit.
Eine DB-Verbindung stellt man dann her, wenn man den ersten Query verarbeitet
Ich persönlich mag das nicht, dass die Fehlermeldung aus einem anderem Objekt kommt, in der ein DB-Query stattfindet.
oder pauschal einfach beim Instanziieren der Klasse im Konstruktor.
... der Klasse DB - gut, aber nirgendwo anders.
Mit deinen Vorschlägen:
class MySQL {
public $count = 0;
public $errorMessage = '';
public $errorType = 'ERROR_SQL';
public $fields = array();
public $linkID = 0;
public $output = '';
public $result = '';
function __construct( $output )
{
$this->connect();
$this->selectDatabase();
}
function connect()
{
$this->linkID = @mysql_connect( DB_HOST, DB_USER, DB_PASSWORD );
if ( ! $this->linkID ) {
$this->setError( 'DB_NO_CONNECTION' );
}
}
function errno()
{
return mysql_errno( $this->linkID );
}
function error()
{
return mysql_error( $this->linkID );
}
function setError( $type )
{
$this->errorMessage = $type;
}
}
Wie würdest du die Fehlermeldung an ein ErrorHandling-Objekt übergeben?