[FrameworkBundle] decouple debug:autowiring from phpdocumentor/reflection-docblock

This commit is contained in:
Serkan Yildiz 2018-12-11 14:42:46 +01:00 committed by Nicolas Grekas
parent 5333bd2fb7
commit 485ed4dd19
4 changed files with 41 additions and 12 deletions

View File

@ -11,8 +11,6 @@
namespace Symfony\Bundle\FrameworkBundle\Console\Descriptor;
use phpDocumentor\Reflection\DocBlockFactory;
use phpDocumentor\Reflection\DocBlockFactoryInterface;
use Symfony\Component\Console\Descriptor\DescriptorInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\DependencyInjection\Alias;
@ -293,21 +291,16 @@ abstract class Descriptor implements DescriptorInterface
public static function getClassDescription(string $class, string &$resolvedClass = null): string
{
$resolvedClass = $class;
if (!interface_exists(DocBlockFactoryInterface::class)) {
return '';
}
try {
$r = new \ReflectionClass($class);
$resolvedClass = $r->name;
if ($docComment = $r->getDocComment()) {
return DocBlockFactory::createInstance()
->create($docComment)
->getSummary();
$docComment = preg_split('#\n\s*\*\s*[\n@]#', substr($docComment, 3, -2), 2)[0];
return trim(preg_replace('#\s*\n\s*\*\s*#', ' ', $docComment));
}
} catch (\ReflectionException | \InvalidArgumentException $e) {
} catch (\ReflectionException $e) {
}
return '';

View File

@ -195,6 +195,22 @@ abstract class AbstractDescriptorTest extends TestCase
return $this->getDescriptionTestData(ObjectsProvider::getCallables());
}
/** @dataProvider getClassDescriptionTestData */
public function testGetClassDecription($object, $expectedDescription)
{
$this->assertEquals($expectedDescription, $this->getDescriptor()->getClassDescription($object));
}
public function getClassDescriptionTestData()
{
return array(
array(ClassWithDocCommentOnMultipleLines::class, 'This is the first line of the description. This is the second line.'),
array(ClassWithDocCommentWithoutInitialSpace::class, 'Foo.'),
array(ClassWithoutDocComment::class, ''),
array(ClassWithDocComment::class, 'This is a class with a doc comment.'),
);
}
abstract protected function getDescriptor();
abstract protected function getFormat();

View File

@ -221,3 +221,24 @@ class ClassWithoutDocComment
class ClassWithDocComment
{
}
/**
* This is the first line of the description.
* This is the second line.
*
* This is the third and shouldn't be shown.
*
* @annot should not be parsed
*/
class ClassWithDocCommentOnMultipleLines
{
}
/**
*Foo.
*
* @annot should not be parsed
*/
class ClassWithDocCommentWithoutInitialSpace
{
}

View File

@ -80,7 +80,6 @@
},
"suggest": {
"ext-apcu": "For best performance of the system caches",
"phpdocumentor/reflection-docblock": "For display additional information in debug:container",
"symfony/console": "For using the console commands",
"symfony/form": "For using forms",
"symfony/serializer": "For using the serializer service",