Пример #1
0
 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));
 }
Пример #2
0
 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());
 }
Пример #3
0
 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');
 }
Пример #4
0
 /**
  * @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;
 }
Пример #5
0
 /**
  * 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) : '';
 }