Exemplo n.º 1
0
 /**
  * Test sorting of traits
  *
  * @return void
  * @test
  */
 public function testSorting()
 {
     $registry = new TraitRegistry();
     $registry->register(TraitB::class);
     $registry->register(TraitC::class);
     $registry->register(TraitSample::class, 'Foobar\\*', 0);
     $registry->register(TraitA::class);
     $result = $registry->findByClass('Foobar\\BaseClass');
     $this->assertEquals(TraitA::class, $result[0]->getName());
     $this->assertEquals(TraitB::class, $result[1]->getName());
     $this->assertEquals(TraitC::class, $result[2]->getName());
     $this->assertEquals(TraitSample::class, $result[3]->getName());
 }
Exemplo n.º 2
0
 /**
  * Generate class using any given references or traits
  *
  * @param string $className
  *
  * @return FileGenerator
  */
 public function build($className)
 {
     $footprint = $this->_footprintRegistry->get($className);
     $parentClass = $footprint->getParent();
     if (!$parentClass) {
         $parentClass = $this->_baseClassRegistry->find($className);
     }
     if ($footprint->isInterface()) {
         $generator = new InterfaceGenerator();
     } else {
         $traits = $this->_traitRegistry->findByClass($className);
         $generator = new ClassGenerator();
         $generator->useTraits($traits);
     }
     $generator->setName($className);
     $generator->setExtendedClass($parentClass);
     $generator->setImplementedInterfaces($footprint->getInterfaces());
     foreach ($footprint->getConstants() as $name => $value) {
         $generator->addConstant($name, $value);
     }
     $file = new FileGenerator();
     $file->setClass($generator);
     return $file;
 }