boehseronkel
Neues Mitglied
Hallo Zusammen,
ich hab nen Problem mit dem OOP Model in der PHP Version 5.2.4.
Ich bin z.Z. dabei ein Framework zu entwicklen uns stoße nach der Konzeption meines Objektmodels auf Probleme bei der Realisierung.
Es geht primär um ein Paket das sich um die Datenbankverbindung kümmert.
Hierzu habe ich, um möglichst Datenbankunabhängig zu bleiben, ein Interface, eine abstrakte Klasse und zur Zeit zwei konkrete Klassen entwickelt.
Ich habe die Kommentare der übersichthalber rausgenommen.
Das Interface
IDatabaseConnector.class.php
Die Basisklasse (abstrakte Klasse), die das Interface implementiert
BaseDatabaseConnector.class.php
Und zu guter Letzt, die konkrete Klasse für die Verbindung zu einer MySQL Datenbank.
Ich habe die zweite Klasse für die Verbindung zur PostGres mal ausgelassen.
Sie erbt von der Basisklasse
MySQLConnector.class.php
Die Methoden sind natürlich implementiert und beinhalten die dementsprechende Logik.
Jetzt bekomme ich während des Interpretiervorgangs folgende Fehlermeldung beim debuggen ...
Jetzt meine Fragen:
1) Wie kommt dieser Fehler zustande?
2) Wenn das so nicht funktion, wie kann man es dann realisieren?
Dazu sei gesagt das ich sehr Fit im objektorientierten Bereich bin und auch die Prinzipien verstehe.
Des weiteren sei gesagt das, dass o.g. Beispiel so wie es da steht, portiert in Java, funktioniert.
Bitte keine Verweise auf PEAR o. ähnliche Extensions ...
Vielen Dank und ich hoffe es kann mir jemand helfen ...
Gruß Sven
ich hab nen Problem mit dem OOP Model in der PHP Version 5.2.4.
Ich bin z.Z. dabei ein Framework zu entwicklen uns stoße nach der Konzeption meines Objektmodels auf Probleme bei der Realisierung.
Es geht primär um ein Paket das sich um die Datenbankverbindung kümmert.
Hierzu habe ich, um möglichst Datenbankunabhängig zu bleiben, ein Interface, eine abstrakte Klasse und zur Zeit zwei konkrete Klassen entwickelt.
Ich habe die Kommentare der übersichthalber rausgenommen.
Das Interface
IDatabaseConnector.class.php
PHP:
interface IDatabaseConnector
{
public function openConnection();
public function closeConnection();
public function getConnection();
public function isConnected();
}
BaseDatabaseConnector.class.php
PHP:
abstract class BaseDatabaseConnector implements IDatabaseConnector
{
protected $_isConnected = false;
protected $_connection = null;
abstract protected function openConnection();
abstract protected function closeConnection();
public function getConnection()
{
return $this->_connection;
}
public function isConnected()
{
return $this->_isConnected;
}
}
Ich habe die zweite Klasse für die Verbindung zur PostGres mal ausgelassen.
Sie erbt von der Basisklasse
MySQLConnector.class.php
PHP:
class MySQLConnector extends BaseDatabaseConnector
{
public function openConnection()
{
// doit
}
public function closeConnection()
{
// doit
}
}
Jetzt bekomme ich während des Interpretiervorgangs folgende Fehlermeldung beim debuggen ...
Zeile 49 - ist die Definition der Basisklasse: abstract class BaseDatabaseConnector implements IDatabaseConnectorKompilierungsfehler: [...]\source\de\svenbartak\database\BaseDatabaseConnector.class.php Zeile 49 - Can't inherit abstract function IDatabaseConnector:penConnection() (previously declared abstract in BaseDatabaseConnector)
Jetzt meine Fragen:
1) Wie kommt dieser Fehler zustande?
2) Wenn das so nicht funktion, wie kann man es dann realisieren?
Dazu sei gesagt das ich sehr Fit im objektorientierten Bereich bin und auch die Prinzipien verstehe.
Des weiteren sei gesagt das, dass o.g. Beispiel so wie es da steht, portiert in Java, funktioniert.
Bitte keine Verweise auf PEAR o. ähnliche Extensions ...
Vielen Dank und ich hoffe es kann mir jemand helfen ...
Gruß Sven