public function testFromReflection() { $classDoc = new Docblock('/** * Doc Comment. * * @author Johannes M. Schmitt <*****@*****.**> */'); $propDoc = new Docblock('/** * @var integer */'); $class = new PhpClass(); $class->setQualifiedName('gossi\\codegen\\tests\\fixture\\Entity')->setAbstract(true)->setDocblock($classDoc)->setDescription($classDoc->getShortDescription())->setLongDescription($classDoc->getLongDescription())->setProperty(PhpProperty::create('id')->setVisibility('private')->setDocblock($propDoc)->setType('integer')->setDescription($propDoc->getShortDescription()))->setProperty(PhpProperty::create('enabled')->setVisibility('private')->setDefaultValue(false)); $methodDoc = new Docblock('/** * Another doc comment. * * @param unknown_type $a * @param array $b * @param \\stdClass $c * @param string $d * @param callable $e */'); $method = PhpMethod::create('__construct')->setFinal(true)->addParameter(PhpParameter::create('a')->setType('unknown_type'))->addParameter(PhpParameter::create()->setName('b')->setType('array')->setPassedByReference(true))->addParameter(PhpParameter::create()->setName('c')->setType('\\stdClass'))->addParameter(PhpParameter::create()->setName('d')->setType('string')->setDefaultValue('foo'))->addParameter(PhpParameter::create()->setName('e')->setType('callable'))->setDocblock($methodDoc)->setDescription($methodDoc->getShortDescription())->setLongDescription($methodDoc->getLongDescription()); $class->setMethod($method); $class->setMethod(PhpMethod::create('foo')->setAbstract(true)->setVisibility('protected')); $class->setMethod(PhpMethod::create('bar')->setStatic(true)->setVisibility('private')); $this->assertEquals($class, PhpClass::fromReflection(new \ReflectionClass('gossi\\codegen\\tests\\fixture\\Entity'))); $class = new PhpClass('gossi\\codegen\\tests\\fixture\\ClassWithConstants'); $class->setConstant('FOO', 'bar'); $this->assertEquals($class, PhpClass::fromReflection(new \ReflectionClass('gossi\\codegen\\tests\\fixture\\ClassWithConstants'))); }
public function testExpression() { $class = new PhpClass('ClassWithExpression'); $class->setConstant(PhpConstant::create('FOO', 'BAR'))->setProperty(PhpProperty::create('bembel')->setExpression("['ebbelwoi' => 'is eh besser', 'als wie' => 'bier']"))->setMethod(PhpMethod::create('getValue')->addParameter(PhpParameter::create('arr')->setExpression('[self::FOO => \'baz\']'))); $codegen = new CodeFileGenerator(['generateDocblock' => false]); $code = $codegen->generate($class); $this->assertEquals($this->getGeneratedContent('ClassWithExpression.php'), $code); }