symplify/better-phpdoc-parser

此包已被废弃,不再维护。作者建议使用rector/rector包代替。

围绕phpstan/phpdoc-parser的精简包装,具有格式保留的打印机


README

Better PhpDoc Parser

Build Status Downloads

围绕phpstan/phpdoc-parser的包装,增加了格式保留打印机

何时需要格式保留打印机?

原始代码

/**
 * @param   string   $name
 * @param   string   $surname
 * @return  bool
  */

由PHPStan PhpDocParser打印

/**
 * @param string $name
 * @param string $surname
 * @return bool
 */

由Better PhpDocParser打印 👍

/**
 * @param   string   $name
 * @param   string   $surname
 * @return  bool
 */

Symplify\CodingStandardRector 需要修改注释并重新以正确格式放置。其他包通常会放置自己的间距,或特定标签的格式。

此包保留原始间距.

感谢格式保留打印机 功能中对 nikic/php-parser 的启发

安装

composer require symplify/better-phpdoc-parser

使用

在您的Symfony配置中注册服务

# services.yaml
imports:
    - { resource: 'vendor/symplify/better-phpdoc-parser/config/config.yml' }

或从您的其他框架的配置中注册services.yaml中所需的服务。

<?php

use Symplify\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Symplify\BetterPhpDocParser\Printer\PhpDocInfoPrinter;

class SomeClass
{
    public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocInfoPrinter $phpDocInfoPrinter)
    {
        $this->phpDocInfoFactory = $phpDocInfoFactory;
        $this->phpDocInfoPrinter = $phpDocInfoPrinter;
    }

    public function changeDocBlockAndPrintItBack(): string
    {
        $docComment = '/**    @var Type $variable    */';

        $phpDocInfo = $this->phpDocInfoFactory->createFrom($docComment);

        // modify `$phpDocInfo` using its methods

        return $this->phpDocInfoPrinter->printFormatPreserving($phpDocInfo);
    }
}