*/ 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:----eA10lFAhxAt992YovPIPmBFj/FHiOsz/jLD5J8jktzQWvBvUyfgPW+MgTUyLIUn5JjXH8Mhd2OCPbZCKlk9t9QO76aJxQ+xcH0IucP8Jox/Ol901Z68rqqE96yzNQMd31RsoLArDgu2QvlbxNL0+t9GHlWulh8gxZxi9s8Ywd69kgwE7jrHCdkbkyhHrBajE2J7TkegsIyQyM5yko8fpxAYCX1JGrTSh0SQMZRvREXE8wo3ooNJMGJFY9fuJeT8GNPuoxNXGXGZJInYg2RQJK8D8omWxf+Wy6q1w6+E4gXTM6kvXB6kj/cFg0sXdVIcUKuz5QyaINVuXP+YyQfK+syP9XDyQsF5qk8kKlWVmaJ7aVqFY+z6PnNUIVBGeYIfVJj3smdFnzpBb4lPjwe/Bh4/XbXwIp/3w3CDJmijOw6dWJ2pvtq0ft64LPeyjpG6ioq5MvT/NXdlWgC4Ki2Nwl+oZ9M60/eXlTDHVt/tPC2aWZloshpTrsUluzk8PnS70tOvEOeGka66T6x34/o6rFU9Qz388SUXC6yZrFdTxWZUtVfciLZDVBonJt0iWHHfQv/oxxEWsIBlEgXWSjjyNZWQVCNnVQmG4Sy3Fdy/Rl+l4WxE8E+mxtEXXZ3/AtuSHv0W55N8wDAzUX8zcxBDNcZrWNTHszpnE68qnLS/qgSQ=----ATTACHMENT:----OTI2NjA5NjEwMzA0MTQ4NiA5MzE2NzM5NjM3NTc0NDgzIDMwMjQxMzc5NjgzMjM0MDQ=