# ❤️ Simple PHP Code Parser

This post was published more than three months ago. Please note that the information offered here may no longer be current and valid. Therefore, please inform yourself about this topic elsewhere. If there is any new information, you can also send me a comment. Thank you so much!

It based on code from “JetBrains/phpstorm-stubs” but instead of Php-Reflection we now use nikic/PHP-Parser, BetterReflection, phpDocumentor and PHPStan/phpdoc-parser internally. So, you can get even more information about the code. For example, psalm- / phpstan-phpdoc annotations or inheritdoc from methods.

Install:

composer require voku/simple-php-code-parser

voku/Simple-PHP-Code-Parser

More:

Example: get value from define in “\foo\bar” namespace

$code = ' <?php namespace foo\bar; define("FOO_BAR", "Lall"); ';$phpCode = PhpCodeParser::getFromString($code);$phpConstants = $phpCode->getConstants();$phpConstants['\foo\bar\FOO_BAR']->value; // 'Lall'

Example: get information about @property phpdoc from a class

$code = ' <?php /** * @property int[]$foo
*/
abstract class Foo { }
';

$phpCode = PhpCodeParser::getFromString($code);
$phpClass =$phpCode->getClass('Foo');

$phpClass->properties['foo']->typeFromPhpDoc); // int Example: get classes from a string (or from a class-name or from a file or from a directory) $code = '
<?php
namespace voku\tests;
class SimpleClass {}
$obja = new class() {};$objb = new class {};
class AnotherClass {}
';

$phpCode = \voku\SimplePhpParser\Parsers\PhpCodeParser::getFromString($code);
$phpClasses =$phpCode->getClasses();

var_dump(\$phpClasses['voku\tests\SimpleClass']); // "PHPClass"-object