示例#1
0
 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());
 }
示例#2
0
 /**
  * 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())));
     }
 }