/** * @depends testDefaultClassImplementationIsCreatedWhenThereIsNoDefinedClassTypeImplementation */ public function testDefaultClassImplementationIsCreatedBasedOnGlobalClassTypeImplementation() { $this->globalClassOptions->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle()); $this->classMap->registerClass('helicopter', 'ConcreteXylophone'); $implementation = new ClassTypeImplementation('helicopter'); $implementation->setClassName('ConcreteXylophone')->setAccessorsEnabled(true)->setAccessorsStyle(new CamelCaseStyle()); $this->assertEquals($implementation, $this->object->getClassTypeImplementation('helicopter')); }
public function getClassTypeImplementation($name) { if (isset($this->classImplementations[$name])) { $classOptions = $this->classImplementations[$name]; } else { $classOptions = new ClassTypeImplementation($name); if ($this->globalClassOptions->getAccessorsStyle()) { $classOptions->setAccessorsStyle($this->globalClassOptions->getAccessorsStyle()); } $classOptions->setAccessorsEnabled($this->globalClassOptions->isAccessorsEnabled()); } if (!$classOptions->getClassName()) { $classOptions->setClassName($this->classMap->getClass($name)); } return $classOptions; }
public function testSetGetClassName() { $this->assertMethodChaining($this->object->setClassName('Overcooked'), 'setClassName'); $this->assertSame('Overcooked', $this->object->getClassName()); }
protected function createClassImplementation($typeName, $options) { $globalClassOptions = $this->implementation->getGlobalClassImplementation(); $classImplementation = new ClassTypeImplementation($typeName); // default class implementation from global class implementation settings $classImplementation->setAccessorsEnabled($globalClassOptions->isAccessorsEnabled()); if ($globalClassOptions->isAccessorsEnabled() && $globalClassOptions->getAccessorsStyle()) { $classImplementation->setAccessorsStyle($globalClassOptions->getAccessorsStyle()); } if (isset($options['class'])) { $classImplementation->setClassName($options['class']); } if (isset($options['accessors'])) { $accessors = $options['accessors']; if (isset($accessors['style'])) { $styleName = $accessors['style']; if (!$this->styles->hasStyle($styleName)) { $msg = sprintf('Cannot set global setters and getters style to "%s" since style does not exist', $styleName); throw new ImplementationLoadingException($msg); } $classImplementation->setAccessorsStyle($this->styles->getStyle($styleName))->setAccessorsEnabled(true); } if (isset($accessors['enabled'])) { $classImplementation->setAccessorsEnabled($accessors['enabled']); } } foreach ((array) @$options['properties'] as $propertyName => $propertyOptions) { $propertyImplementation = $this->createPropertyImplementation($propertyName, $propertyOptions, $classImplementation); $classImplementation->addPropertyImplementation($propertyImplementation); } return $classImplementation; }