TYPO3 CMS  TYPO3_8-7
CmsVariableProvider.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
20 class CmsVariableProvider extends \TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider
21 {
33  public function getByPath($path, array $accessors = [])
34  {
35  $path = $this->resolveSubVariableReferences($path);
36  return \TYPO3\CMS\Extbase\Reflection\ObjectAccess::getPropertyPath($this->variables, $path);
37  }
38 
43  protected function resolveSubVariableReferences($propertyPath)
44  {
45  if (strpos($propertyPath, '{') !== false) {
46  preg_match_all('/(\{.*\})/', $propertyPath, $matches);
47  foreach ($matches[1] as $match) {
48  $subPropertyPath = substr($match, 1, -1);
49  $propertyPath = str_replace($match, $this->getByPath($subPropertyPath), $propertyPath);
50  }
51  }
52  return $propertyPath;
53  }
54 }