In ZF2, ich habe eine Fabrik wie dieseZF2 instanziierenden Klassen von Fabriken MutableCreationOptionsTrait mit: die gleiche Instanz der Klasse erstellt, egal was
class SomeServiceFactory implements FactoryInterface, MutableCreationOptionsInterface
{
use MutableCreationOptionsTrait;
public function createService(ServiceLocatorInterface $serviceLocator)
{
$serviceManager = $serviceLocator->getServiceLocator();
$formElementManager = $serviceManager->get('FormElementManager');
if ($this->creationOptions == 'value1') {
return new SomeService(
$formElementManager->get('Path\To\Form1'),
$serviceManager->get('Path\To\Mapper1'),
new Object1()
);
} elseif ($this->creationOptions == 'value2') {
return new SomeService(
$formElementManager->get('Path\To\Form2'),
$serviceManager->get('Path\to\Mapper2'),
new Object2()
);
}
}
}
In der Controller Factory, erhalte ich mehrere Instanzen von SomeService
basierend auf dem Optionswert bei der Objekterzeugung angehängt, wie
$service1 = $viewHelperManager->get('Path\To\SomeService', ['valueType' => 'value1']);
$service2 = $viewHelperManager->get('Path\To\SomeService', ['valueType' => 'value2']);
(diese Dienste sind View-Helfer mit ihren Abhängigkeiten). Das Problem ist, dass $service2
das exakt gleiche Objekt wie $service1
ist, während es andere Abhängigkeiten haben sollte Ich habe versucht, die Sache ein wenig zu studieren, und es scheint, dass die $creationOptions
nicht aktualisiert werden, wenn $service2
zugewiesen wird, obwohl die valueType
ist komplett anders.
Was ist los?