1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- /**
- * @author Fabien Potencier <fabien@symfony.com>
- */
- class Twig_Util_DeprecationCollector
- {
- private $twig;
- private $deprecations;
- public function __construct(Twig_Environment $twig)
- {
- $this->twig = $twig;
- }
- /**
- * Returns deprecations for templates contained in a directory.
- *
- * @param string $dir A directory where templates are stored
- * @param string $ext Limit the loaded templates by extension
- *
- * @return array() An array of deprecations
- */
- public function collectDir($dir, $ext = '.twig')
- {
- $iterator = new RegexIterator(
- new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY
- ), '{'.preg_quote($ext).'$}'
- );
- return $this->collect(new Twig_Util_TemplateDirIterator($iterator));
- }
- /**
- * Returns deprecations for passed templates.
- *
- * @param Iterator $iterator An iterator of templates (where keys are template names and values the contents of the template)
- *
- * @return array() An array of deprecations
- */
- public function collect(Iterator $iterator)
- {
- $this->deprecations = array();
- set_error_handler(array($this, 'errorHandler'));
- foreach ($iterator as $name => $contents) {
- try {
- $this->twig->parse($this->twig->tokenize($contents, $name));
- } catch (Twig_Error_Syntax $e) {
- // ignore templates containing syntax errors
- }
- }
- restore_error_handler();
- $deprecations = $this->deprecations;
- $this->deprecations = array();
- return $deprecations;
- }
- /**
- * @internal
- */
- public function errorHandler($type, $msg)
- {
- if (E_USER_DEPRECATED === $type) {
- $this->deprecations[] = $msg;
- }
- }
- }
|