Hallo liebe PHP-Programmierer,
für die Erstellung eines automatisierten Tests möchte ich php auf Kommandozeilenebene nutzen (keine Webentwicklung). Das Testskript, oder Teile des Testskripts sollen möglichst wiederverwendbar sein und ein anderer Test möglichst schnell durch Austausch von Komponenten möglich sein.
Um dies zu realisieren möchte ich Interfaces bzw. abstrakte Klassen verwenden.
Nun zu meinem Problem:
Ich möchte eine abstrakte Testklasse definieren die schon einige Methoden und ein paar Attribute enthält, welche wiederum Objekte sind. Ich möchte den Datentyp der Attribute in der abstrakten Klasse festlegen, da ich in den Methoden der abstrakten Testklasse wiederum Methoden der internen Objekte zugreifen möchte. Demzufolge muss es sich bei den Attributen um Childs einer abstrakten Klasse handeln. Dies möchte ich nun festlegen.
Dazu folgendes Beispiel:
Im obigen Beispiel werde ich zur Laufzeit eine Fehlermeldung bekommen, dass es die Funktion GetMeasurementValues nicht gibt, da diese in der Klasse VoltageDevice nicht implementiert wurde. Deshalb möchte ich bereits in der abstrakten Klasse TestSkript festlegen, dass es sich bei dem Attribut $myMeasurementDevice um eine Instanz einer Klasse handeln muss, welche von der Klasse MeasurementDevice erbt.
Gibt es in PHP die Möglichkeit, dies in der abstrakten Klasse breits festzulegen?
Ich bin eigentlich ein C bzw. C++ Programmierer und wüsste zumindest in diesen Programmiersprachen, wie ich mit diesem Problem umgehen müsste, da man hier Datentypen festlegen muss.
Vielen Dank im Vorraus!
für die Erstellung eines automatisierten Tests möchte ich php auf Kommandozeilenebene nutzen (keine Webentwicklung). Das Testskript, oder Teile des Testskripts sollen möglichst wiederverwendbar sein und ein anderer Test möglichst schnell durch Austausch von Komponenten möglich sein.
Um dies zu realisieren möchte ich Interfaces bzw. abstrakte Klassen verwenden.
Nun zu meinem Problem:
Ich möchte eine abstrakte Testklasse definieren die schon einige Methoden und ein paar Attribute enthält, welche wiederum Objekte sind. Ich möchte den Datentyp der Attribute in der abstrakten Klasse festlegen, da ich in den Methoden der abstrakten Testklasse wiederum Methoden der internen Objekte zugreifen möchte. Demzufolge muss es sich bei den Attributen um Childs einer abstrakten Klasse handeln. Dies möchte ich nun festlegen.
Dazu folgendes Beispiel:
PHP-Code:
<?php
abstract class MeasuremenDevice
{
public function GetMeasurementValues($Channel);
}
abstract class TestSkript
{
protected $myMeasurementDevice; // hier möchte ich festlegen, dass dieses Attribut ein Child der MeasurementDevice-Klasse sein muss
protected $myProtocol;
protected $ValueArray=array();
function __construct ($Path)
{
$this->myProtocol = new Protocol($Path); // diese Klasse beschreibe ich hier nicht näher
}
public function StartTest()
{
$this->myProtocol->WriteStartPage();
$myValues = $this->myMeasuremtDevice->GetMeasurementValues(1);
$this->myProtocol->AddValues();
}
}
class VoltageDevice
{
public function GetVoltageValues()
{
return 12.3; //kleines Beispiel
}
}
class VoltageMeasurement extends TestSkript
{
function __construct(
{
parent::__construct("Protokoll_1.pdf");
$this->myMeasurementDevice = new VoltageDevice();
}
}
$myTest = new VoltageMeasurement();
$myTest->StartTest();
?>
Gibt es in PHP die Möglichkeit, dies in der abstrakten Klasse breits festzulegen?
Ich bin eigentlich ein C bzw. C++ Programmierer und wüsste zumindest in diesen Programmiersprachen, wie ich mit diesem Problem umgehen müsste, da man hier Datentypen festlegen muss.
Vielen Dank im Vorraus!
Kommentar