php-di / phpdoc-reader
PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)
Installs: 23 800 742
Dependents: 58
Suggesters: 2
Security: 0
Stars: 73
Watchers: 4
Forks: 15
Open Issues: 0
Requires
- php: >=7.2.0
Requires (Dev)
- mnapoli/hard-mode: ~0.3.0
- phpunit/phpunit: ^8.5|^9.0
README
This project is used by:
Fork the README to add your project here.
Features
PhpDocReader parses @var
and @param
values in PHP docblocks:
use My\Cache\Backend; class Cache { /** * @var Backend */ protected $backend; /** * @param Backend $backend */ public function __construct($backend) { } }
It supports namespaced class names with the same resolution rules as PHP:
- fully qualified name (starting with
\
) - imported class name (eg.
use My\Cache\Backend;
) - relative class name (from the current namespace, like
SubNamespace\MyClass
) - aliased class name (eg.
use My\Cache\Backend as FooBar;
)
Primitive types (@var string
) are ignored (returns null), only valid class names are returned.
Usage
$reader = new PhpDocReader(); // Read a property type (@var phpdoc) $property = new ReflectionProperty($className, $propertyName); $propertyClass = $reader->getPropertyClass($property); // Read a parameter type (@param phpdoc) $parameter = new ReflectionParameter([$className, $methodName], $parameterName); $parameterClass = $reader->getParameterClass($parameter);