Inspired by blog series by @TomasVortuba - https://tomasvotruba.com/blog/stamp-1-how-to-compile-twig-to-php/
- Performance
- Currently, templates are processed only sequentially
- Same templates with same variables included in multiple templates are checked multiple times
- High memory usage when depth of included templates is higher
- Method name guessing is not supported. I believe that template engine should not guess which method programmer wanted to use. Therefore, if you want to use method, use it with full name and parentheses
{{ class.fullMethodName() }}
To use this extension, require it in Composer:
composer require --dev driveto/phpstan-twig
Include extension.neon in your project's PHPStan config:
includes:
- vendor/driveto/phpstan-twig/extension.neon
Add path to Twig service in phpstan.neon:
parameters:
twig:
twigEnvironmentLoader: tests/TwigEnvironmentLoader.php
Example of Twig loader:
use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;
require __DIR__ . '/../vendor/autoload.php';
(new Dotenv())->bootEnv(__DIR__ . '/../.env');
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$kernel->boot();
return $kernel->getContainer()->get('twig');