Извините, я не смог придумать более описательный заголовок.Моя проблема заключается в следующем.Предположим, что у вас есть два класса A и B, и вы знаете, что иногда может случиться так, что некоторый код пытается создать экземпляр объекта типа A, когда на самом деле нужен объект типа B. Дело в том, что код длярешить, какой объект является правильным, естественно, принадлежит классу A , а не клиентскому коду.
В javascript (хорошо, у js нет классов, но это проясняет суть), вы можете простоdo
function A() {
if(some_condition) {
return new B();
}
//else we proceed to customize and return our object
}
Я хочу сделать что-то подобное в PHP.Лучшее, что я могу придумать, это
class A {
private function __construct() {
//whatever you need to do
}
public static function getInstance() {
if(some_condition) {
return new B();
}
else {
return new A();
}
}
}
Проблема в том, что клиентский код всегда должен знать, что A особенный, и вам нужно создавать экземпляры объектов статическим методом.
Есть ли способ делегировать A выбор типа объекта для бесперебойного возврата?