Поскольку черты недоступны в PHP 5.3 AFAIK, мне нужно эмулировать некоторые функции, которые они предлагают.Интерфейсы не будут работать, потому что мне нужна конкретная функциональность.
Проблема:
У меня есть два клиентских класса, которые должны совместно использовать некоторые функции, но расширены из разных базовых классов.
ClassA extends Foo {}
ClassB extends Bar {}
Мне нужно иметь возможность реализовать функциювызывается getComponent () в обоих классах, и функциональность должна быть идентичной.
Изменение базового класса не является вариантом.Я думал сделать что-то вроде этого:
Class ComponentHandler {
function getInstance() {
//return singleton
}
function getComponent() {
//required functionality
}
}
Class A extends Foo {
var $handler;
function __construct() {
$this->handler = ComponentHandler::getInstance();
}
}
Я бы реализовал этот конструктор как в ClassA, так и в ClassB.В моем клиенте я звонил бы так:
$class = new ClassA();
$class->handler->getComponent();
$class = new ClassB();
$class->handler->getComponent();