Я пытаюсь решить головоломку с дизайном наиболее эффективным способом, но я склонен перестать думать, что мне действительно нужно множественное наследование. Итак, вот я и спрашиваю плюсы. Я создаю библиотеку с активной записью, которая будет выполнять практически идентичные действия с разными name
и value
переменными. Я на PHP 5.2.13
Предположим, у меня есть эти классы:
class Property {
protected $_props = array();
function set($name, $value) {
$this->_props[$name] = $value;
};
}
class ColorProperties extends Property {
function red($value) {
$this->set('red', $value);
}
function blue($value) {
$this->set('blue', $value);
}
}
class LayoutProperties extends Property {
function x($value) {
$this->set('x', $value);
}
function y($value) {
$this->set('y', $value);
}
}
Теперь мне нужно создать класс ShapeProperties
, который будет наследоваться как от ColorProperties
, так и от LayoutProperties
. Так что:
$shape = new ShapeProperties();
$shape->x(10);
$shape->red(255);
Причина, по которой я так нуждаюсь, заключается в автоматическом завершении в IDE с огромным блоком комментариев PHPDoc для каждого свойства. Итак, похоже, что я склоняюсь к копированию / вставке из отчаяния.
СТАРЫЙ ОРГАН (ДО РЕДАКТИРОВАНИЯ)
У меня есть эти классы (блоки):
class Red {
function red();
}
class LightRed {
function light_red();
}
class Blue {
function blue();
}
class LightBlue {
function light_blue();
}
class Green {
function green();
}
class LightGreen {
function light_green();
}
И теперь мне нужно построить множество классов с использованием этих блоков, а именно:
class RGB extends Red, Green, Blue {
function red();
function blue();
function green();
}
class RLRB extends Red, LightRed, Blue {
function red();
function light_red();
function blue();
}
Так что, если я переключу класс слова с интерфейсом, я получу то, что мне нужно, но мне нужна рабочая реализация без загрузки шаблонного кода. Есть ли способ / способ обойти это в PHP?