public function create() { $definition = new Definition($this->className); $definition->setClass($this->nameSpace . '\\' . $this->className); $definition->setAbstract(true); $properties = $this->extractProperties(); $definition->setProperties($properties); $methods = $this->extractMethods(); $definition->setMethods($methods); $definition->addInterface('\\Serializable'); $definition->addMethod($this->createSerialize()); $definition->addMethod($this->createUnserialize()); return $definition; }
public function testMethods() { $methods = array(); $methods[1] = new Method('public', 'method1', '', ''); $methods[2] = new Method('public', 'method2', '', ''); $methods[3] = new Method('public', 'method3', '', ''); $methods[4] = new Method('public', 'method4', '', ''); $definition = new Definition('Class1'); // addMethod $definition->addMethod($methods[1]); $definition->addMethod($methods[2]); $this->assertSame(array($methods[1], $methods[2]), $definition->getMethods()); // setMethods $definition->setMethods(array($methods[3], $methods[4])); $this->assertSame(array($methods[3], $methods[4]), $definition->getMethods()); // hasMethodByName $this->assertTrue($definition->hasMethodByName('method3')); $this->assertFalse($definition->hasMethodByName('method1')); // getMethodByName $this->assertSame($methods[3], $definition->getMethodByName('method3')); $this->assertSame($methods[4], $definition->getMethodByName('method4')); // removeMethodByName $definition->setMethods($methods); $definition->removeMethodByName('method2'); $this->assertFalse($definition->hasMethodByName('method2')); $this->assertTrue($definition->hasMethodByName('method1')); $this->assertTrue($definition->hasMethodByName('method3')); $this->assertTrue($definition->hasMethodByName('method4')); }