PHP code example of rector / simple-php-doc-parser
1. Go to this page and download the library: Download rector/simple-php-doc-parser library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rector / simple-php-doc-parser example snippets
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SimplePhpDocParser\ValueObject\SimplePhpDocParserConfig;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->import(SimplePhpDocParserConfig::FILE_PATH);
};
use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode;
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
use Symplify\SimplePhpDocParser\SimplePhpDocParser;
final class SomeClass
{
/**
* @var SimplePhpDocParser
*/
private $simplePhpDocParser;
public function __construct(SimplePhpDocParser $simplePhpDocParser)
{
$this->simplePhpDocParser = $simplePhpDocParser;
}
public function some(): void
{
$docBlock = '/** @param int $name */';
/** @var PhpDocNode $phpDocNode */
$simplePhpDocNode = $this->simplePhpDocParser->parseDocBlock($docBlock);
// param extras
/** @var TypeNode $nameParamType */
$nameParamType = $simplePhpDocNode->getParamType('name');
/** @var ParamTagValueNode $nameParamTagValueNode */
$nameParamTagValueNode = $simplePhpDocNode->getParam('name');
}
}
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use Symplify\SimplePhpDocParser\PhpDocNodeTraverser;
use Symplify\SimplePhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor;
use Symplify\SimplePhpDocParser\PhpDocNodeVisitor\CallablePhpDocNodeVisitor;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
$phpDocNode = new PhpDocNode([new PhpDocTagNode('@var', new VarTagValueNode(new IdentifierTypeNode('string')))]);
// A. you can use callable to traverse
$callable = function (Node $node): Node {
if (! $node instanceof VarTagValueNode) {
return $node;
}
$node->type = new IdentifierTypeNode('int');
return $node;
};
$callablePhpDocNodeVisitor = new CallablePhpDocNodeVisitor($callable, null);
$phpDocNodeTraverser->addPhpDocNodeVisitor($callablePhpDocNodeVisitor);
// B. or class that extends AbstractPhpDocNodeVisitor
final class IntegerPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{
/**
* @return Node|int|null
*/
public function enterNode(Node $node)
{
if (! $node instanceof VarTagValueNode) {
return $node;
}
$node->type = new IdentifierTypeNode('int');
return $node;
}
}
$integerPhpDocNodeVisitor = new IntegerPhpDocNodeVisitor();
$phpDocNodeTraverser->addPhpDocNodeVisitor($integerPhpDocNodeVisitor);
// then traverse the main node
$phpDocNodeTraverser->traverse($phpDocNode);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.