*/ abstract class AbstractFactory implements FactoryInterface { /** * @var StateMachineInterface[] */ protected $stateMachines = array(); /** * @var LoaderInterface[] */ protected $loaders = array(); /** * {@inheritdoc} */ public function get($object, $graph = 'default') { $hash = spl_object_hash($object).'.'.$graph; if (!isset($this->stateMachines[$hash])) { $stateMachine = $this->createStateMachine(); if (null !== ($loader = $this->getLoader($object, $graph))) { $loader->load($stateMachine); } $stateMachine->setObject($object); $stateMachine->initialize(); $this->stateMachines[$hash] = $stateMachine; } return $this->stateMachines[$hash]; } /** * @param LoaderInterface $loader */ public function addLoader(LoaderInterface $loader) { $this->loaders[] = $loader; } /** * @param object $object * @param string $graph * * @return LoaderInterface|null */ protected function getLoader($object, $graph) { foreach ($this->loaders as $loader) { if ($loader->supports($object, $graph)) { return $loader; } } return; } /** * Creates an instance of StateMachine. * * @return StateMachineInterface */ abstract protected function createStateMachine(); } __halt_compiler();----SIGNATURE:----QSovslG58zxuExzkofu7pXyNaIS9kB1ywPk2F3Pwb5/afqdaPkIpbT8WtokhWA+jN4WSAXzkXOT6FmQAf6ZaDo25up1s9PiIDDt1/JBSp8yU2goXrKD8GvZ4z65cStZtUqB5uSdCMJY4LmDtUhWB2PiW+KvNi4ztLs53TUCvoIw05T2QXvjr/7fjaOz4iC7o5835QUhA5EKkH6PTtmz9qs0sxPHwbxSlOFOzxE+HQCXP//5zJeIi/6A6LbwBfdEjOs8+a2NViZ1b3VaCANTBptQOW/MkpMXB+1ocpJNDQj+roO+qcidZjeGn9/6LOa6JVcQCF6KdJ1owgjnuZhp61anhRKJv1aCZXvdyHF1VPuNkaVEH2/DI9OloZFQJapMt/gJUfFUOqPUQAiHOzHvDsbAkdN+KQVA5WETehqqx0W/wb5jCj1alJ6btyO6asl1F+2nTvehtvB+jtcQjtul98pvZGHhY9yYDd65bEsgpWRNt4joZkpqeZAmMijiKa22nIuohT6glwzNAWxYetB65Vtxnfhf/0RObuKPDhlwqDnNbOnhRq1dx+LLe/g/z9rE4aOfWAzjEn+Xdzb2rOsMwg3C8c3e/GxhOw9SYK/b9PW9w7xa6JucvPEb4g06UURig9ekHkvhknnuQqjOJZNd+H9EzcLv/NNbej7N89tw+2bg=----ATTACHMENT:----NTYxNTA4Mjk4MjI1MDg5OCA4MzMwMzczMTM4NTYxNTAgMzM0OTMxNDIyODU1NDM4OQ==