1771056483
markdown-1652afb707629df988d1b85bfe1cee3aced29432
s:1659:"<h1>PhpDocReader</h1>
<p><img src="https://img.shields.io/packagist/dt/PHP-DI/phpdoc-reader.svg" alt="" /></p>
<p>This project is used by:</p>
<ul>
<li><a href="http://php-di.org/">PHP-DI 6</a></li>
<li><a href="https://github.com/balihoo/phockito-unit-php-di">phockito-unit-php-di</a></li>
</ul>
<p>Fork the README to add your project here.</p>
<h2>Features</h2>
<p>PhpDocReader parses <code>@var</code> and <code>@param</code> values in PHP docblocks:</p>
<pre><code class="language-php">
use My\Cache\Backend;

class Cache
{
    /**
     * @var Backend
     */
    protected $backend;

    /**
     * @param Backend $backend
     */
    public function __construct($backend)
    {
    }
}</code></pre>
<p>It supports namespaced class names with the same resolution rules as PHP:</p>
<ul>
<li>fully qualified name (starting with <code>\</code>)</li>
<li>imported class name (eg. <code>use My\Cache\Backend;</code>)</li>
<li>relative class name (from the current namespace, like <code>SubNamespace\MyClass</code>)</li>
<li>aliased class name  (eg. <code>use My\Cache\Backend as FooBar;</code>)</li>
</ul>
<p>Primitive types (<code>@var string</code>) are ignored (returns null), only valid class names are returned.</p>
<h2>Usage</h2>
<pre><code class="language-php">$reader = new PhpDocReader();

// Read a property type (@var phpdoc)
$property = new ReflectionProperty($className, $propertyName);
$propertyClass = $reader-&gt;getPropertyClass($property);

// Read a parameter type (@param phpdoc)
$parameter = new ReflectionParameter(array($className, $methodName), $parameterName);
$parameterClass = $reader-&gt;getParameterClass($parameter);</code></pre>";