Problemspace

ViewScopeRector is your helper to make static analysis tools aware of variable-types within view-scripts infered from a external context.

Summary

This rector includes the mechanics of scanning procedural php files (e.g. views) and calling a given ContextInferer. It afterwards updates the view-files global @var phpdocs to reflect the types, the ContextInferer determinded beforehand.

A example implementation is shipped with ViewContextInferer, which implements Ruby'on Rails like view <–> controller type inference.

example big picture

this rector is meant to introduce @var phpdocs into analyzed view files, e.g. based on declared public properties of a corresponding controller.

example Controller:

class Controller {
   /**
    * @var string
    */
   public $hello;
}

example view:

echo $hello;

the rector should lookup the controller-class via static reflection, infer the type of its properties and with this knowledge adjust/create a @var phpdoc in the view file.

so in the end the rector will change the example view to

/**
 * @var string
 */
echo $hello;