public function testExtendsRealization() { $this->metaClassRealizer->setDefaultTemplate('{extends}'); $this->assertEquals('', $this->metaClassRealizer->realize($this->metaClassMock), 'Realization when class does not extend another one'); $this->metaClassMock->expects($this->any())->method('getParent')->will($this->returnSelf()); $this->assertEquals(' extends ClassName', $this->metaClassRealizer->realize($this->metaClassMock)); }
public function testMetaClass() { $class = $this->phpyClass; $props = $this->phpyClass->getProperties(); $methods = $this->phpyClass->getMethods(); $this->assertEquals('DummyClass', $class->getName()); $this->assertTrue($class->isAbstract()); $this->assertEquals('Phpy\\Test\\Reflection', $class->getNamespace()); $this->assertTrue($class->implementsInterface('Phpy\\Test\\Reflection\\DummyInterface')); $this->assertEquals($props, $this->phpyProps); $this->assertEquals($methods, $this->phpyMethods); $this->assertEquals('stdClass', $this->phpyExtendedClass->getParent()->getName()); }
public function testMethodsMethods() { $methods = array($method1 = new Method('method1'), $method2 = new Method('method2'), $method3 = new Method('method3')); $this->class->setMethods($methods); $this->assertEquals($methods, $this->class->getMethods(), 'Set And Get Methods test'); $this->class->addMethod($method4 = new Method('method4')); $this->assertEquals(array($method1, $method2, $method3, $method4), $this->class->getMethods(), 'AddMethod method test'); $this->class->removeMethod('method2'); $this->assertEquals(array($method1, $method3, $method4), \array_values($this->class->getMethods()), 'Remove method test'); $this->assertEquals($this->class->getMethod('method1'), $method1, 'GetMethod Test'); $this->setExpectedException('InvalidArgumentException'); $this->class->getMethod('method2'); }
/** * @param \ReflectionClass $class * @return MetaClass */ public function metaClass(\ReflectionClass $class) { $phpyClass = new MetaClass($class->getName()); $phpyClass->setAbstract($class->isAbstract()); if ($parent = $class->getParentClass()) { $phpyClass->setParent($this->metaClass($parent)); } $phpyClass->setInterfaces($class->getInterfaceNames()); foreach ($class->getProperties() as $refProperty) { $phpyClass->addProperty($this->property($refProperty)); } foreach ($class->getMethods() as $refMethod) { $phpyClass->addMethod($this->method($refMethod)); } return $phpyClass; }
/** * Realize the set of methods * * @param MetaClass $class * @return string */ private function realizeMethods(MetaClass $class) { $realizedMethods = array(); foreach ($class->getMethods() as $method) { $realizedMethods[] = $this->methodRealizer->realize($method); } return $realizedMethods ? implode(PHP_EOL . PHP_EOL, $realizedMethods) : ''; }