如何解析 Typoscript 文件?

How do I parse a Typoscript file?

我正在写一个单元测试,想检查某个typoscript文件中的数据是否满足我的要求。如何将文本文件转换为数组? Typo3-Framework 可用。

我的 google 研究指出使用 class \TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser 但我没有找到用法示例...

(使用 Typo3 7.6)

这是有效的(但可能有更好的方法来做到这一点):

<?php
use TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser;

class TyposcriptTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
    public function setUp() {
        parent::setUp();
        $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');  
    }

    protected function loadTSFile($filename) {
        $content = file_get_contents($filename);
        $parser = $this->objectManager->get(TypoScriptParser::class);
        $parser->parse($content);

        return $parser->setup;  
    }

    public function testTS() {
        $array = $this->loadTSFile('...');
        $this->assertTrue(isset($array['tx_extension.']['flexForm.']['andsoon.']]), 'Assertion failed. TS content: ' . var_export($array, true));
    }
}

这是 TYPO3 v - 10 的工作示例。4.x

    $tsString = 'colors {
          backgroundColor = red
          fontColor = blue
        }

        [ip("123.45.*")]

          headerImage = fileadmin/img1.jpg

        [ELSE]

          headerImage = fileadmin/img2.jpg

        [GLOBAL]

        // Wonder if this works... :-)
        wakeMeUp = 7:00';

        $TSparserObject = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
              \TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser::class
        );
        $TSparserObject->parse($tsString);

        echo '<pre>';
        print_r($TSparserObject->setup);
        echo '</pre>';