public function testSetGetMethods() { $class = new PhpClass(); $this->assertEquals(array(), $class->getMethods()); $this->assertSame($class, $class->setMethods($methods = array('foo' => new PhpMethod()))); $this->assertSame($methods, $class->getMethods()); $this->assertSame($class, $class->setMethod($method = new PhpMethod('foo'))); $this->assertSame(array('foo' => $method), $class->getMethods()); $this->assertTrue($class->hasMethod('foo')); $this->assertSame($class, $class->removeMethod('foo')); $this->assertEquals(array(), $class->getMethods()); }
/** * Generate aop methods proxies * * @param PhpClass $aopClass * @param PhpClass $parentClass */ private function generateAopMethodProxy(PhpClass $aopClass, PhpClass $parentClass) { foreach ($parentClass->getMethods() as $method) { /* @var $method \CG\Generator\PhpMethod */ try { $aopClass->getMethod($method->getName()); } catch (\InvalidArgumentException $e) { try { $proxyMethod = new ProxyMethod($method); $aopClass->setMethod($proxyMethod); } catch (ProxyMethodException $e) { } } } if ($parentClass->getParentClassName() != null) { $this->generateAopMethodProxy($aopClass, PhpClass::fromReflection(new \ReflectionClass($parentClass->getParentClassName()))); } }