/**
* Creates a PHP class from reflection
*
* @param \ReflectionClass $ref
* @return PhpClass
*/
public static function fromReflection(\ReflectionClass $ref)
{
$class = new static();
$class->setQualifiedName($ref->name)->setAbstract($ref->isAbstract())->setFinal($ref->isFinal())->setUseStatements(ReflectionUtils::getUseStatements($ref));
if ($ref->getDocComment()) {
$docblock = new Docblock($ref);
$class->setDocblock($docblock);
$class->setDescription($docblock->getShortDescription());
$class->setLongDescription($docblock->getLongDescription());
}
// methods
foreach ($ref->getMethods() as $method) {
$class->setMethod(static::createMethod($method));
}
// properties
foreach ($ref->getProperties() as $property) {
$class->setProperty(static::createProperty($property));
}
// traits
foreach ($ref->getTraits() as $trait) {
$class->addTrait(PhpTrait::fromReflection($trait));
}
// constants
// TODO: https://github.com/gossi/php-code-generator/issues/19
$class->setConstants($ref->getConstants());
return $class;
}