zu verlängern haben wir zwei Klassen Unter der Annahme, im \Base\Form\
Namespace:Mehrfachvererbung, ‚Notwendigkeit‘ zwei Klassen
class Field {
protected $name;
protected $value;
}
class DropdownField extends Field {
protected $options = [];
// with functions like setOptions(), addOption(), removeOption() etc.
}
nun in einem anderen Namespace, eine Klasse besteht, dass auf Field
erstreckt, die ein zusätzliches 'layout_position'
hat Immobilie:
namespace Integrations;
class IntegrationsField extends \Base\Form\Field {
const LAYOUT_POSITION_LEFT = 'left';
const LAYOUT_POSITION_RIGHT = 'right';
protected $layoutPosition = self::LAYOUT_POSITION_LEFT;
}
Nun könnte man dieses kommen sehen, aber im Falle eines IntegrationsField
, der auch ein Drop-Down sein kann:
namespace Integrations;
class IntegrationsDropdownField extends \Base\Form\DropdownField {}
Natürlich sollte dieser auch die $layoutPosition
haben, die von IntegrationsField
geerbt werden sollte, aber da wir zwei Klassen nicht erweitern können, was ist die beste Lösung, um hier zu gehen?
Dieses genaue Beispiel würde nicht funktionieren, weil Merkmale keine Konstanten haben können. (Dies löst einen schwerwiegenden Fehler aus.) – Adambean
@Adambean Ich habe das Beispiel mit einem "enum" einer Art aktualisiert. Es passt nicht gut zu mir, aber es scheint nicht, dass PHP uns hier eine große Auswahl bietet. – apokryfos
Schnittstellen können Konstanten haben? Ich wünschte, ich wüsste das vor 9 Stunden. : D – Adambean