/** * @param Class_ $node * @param PHPNamespace $target */ public function handleClass(Class_ $node, PHPNamespace $target) { $name = $node->name; $modifiers = 0; $modifiers |= $node->isAbstract() ? PHPClass::IS_ABSTRACT : 0; $modifiers |= $node->isFinal() ? PHPClass::IS_FINAL : 0; $class = $this->codeFactory->buildClass($name, $modifiers); $target->addClass($class); $this->parse($node->stmts, $class); }
/** * Handles classes */ function it_handles_final_classes(PHPNamespace $namespace, CodeFactoryContract $codeFactory, PHPClass $class) { $classNode = new Class_('Foo', ['type' => Class_::MODIFIER_FINAL]); $codeFactory->buildClass('Foo', PHPClass::IS_FINAL)->willReturn($class)->shouldBeCalled(); $namespace->addClass($class)->shouldBeCalled(); $this->parse([$classNode], $namespace); }