Skip to content

Commit 1aed7a8

Browse files
Merge pull request #18832 from MauricioFauth/template-cache
Change Twig cache dir to app/cache/twig
2 parents b812277 + 7650464 commit 1aed7a8

6 files changed

Lines changed: 18 additions & 21 deletions

File tree

psalm-baseline.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12146,7 +12146,6 @@
1214612146
<file src="src/Template.php">
1214712147
<DeprecatedMethod>
1214812148
<code>Config::getInstance()</code>
12149-
<code>Config::getInstance()</code>
1215012149
</DeprecatedMethod>
1215112150
</file>
1215212151
<file src="src/Theme/Theme.php">
@@ -15718,9 +15717,6 @@
1571815717
</UndefinedMethod>
1571915718
</file>
1572015719
<file src="tests/classes/TemplateTest.php">
15721-
<DeprecatedMethod>
15722-
<code>Config::getInstance()</code>
15723-
</DeprecatedMethod>
1572415720
<PossiblyUnusedMethod>
1572515721
<code>providerTestDynamicRender</code>
1572615722
<code>providerTestRender</code>

src/Command/CacheWarmupCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ private function warmUpTwigCache(
124124
$config->set('environment', $config->settings['environment']);
125125
DatabaseInterface::$instance = new DatabaseInterface(new DbiDummy());
126126
$tmpDir = ROOT_PATH . 'twig-templates';
127-
$twig = Template::getTwigEnvironment($tmpDir);
127+
$twig = Template::getTwigEnvironment($tmpDir, $config->config->environment === 'development');
128128

129129
$output->writeln('Searching for files...', OutputInterface::VERBOSITY_VERY_VERBOSE);
130130

src/Command/TwigLintCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ protected function getTemplateContents(string $filePath): string
160160
/** @return mixed[] */
161161
private function validate(string $template, string $file): array
162162
{
163-
$twig = Template::getTwigEnvironment(null);
163+
$twig = Template::getTwigEnvironment(null, false);
164164

165165
$realLoader = $twig->getLoader();
166166
try {

src/Template.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function __construct(Config|null $config = null)
5151
$this->config = $config ?? Config::getInstance();
5252
}
5353

54-
public static function getTwigEnvironment(string|null $cacheDir): Environment
54+
public static function getTwigEnvironment(string|null $cacheDir, bool $isDevEnv): Environment
5555
{
5656
/* Twig expects false when cache is not configured */
5757
if ($cacheDir === null) {
@@ -63,7 +63,7 @@ public static function getTwigEnvironment(string|null $cacheDir): Environment
6363

6464
$twig->addRuntimeLoader(new ContainerRuntimeLoader(Core::getContainerBuilder()));
6565

66-
if ((Config::getInstance()->settings['environment'] ?? '') === 'development') {
66+
if ($isDevEnv) {
6767
$twig->enableDebug();
6868
$twig->enableStrictVariables();
6969
$twig->addExtension(new DebugExtension());
@@ -102,7 +102,8 @@ public static function getTwigEnvironment(string|null $cacheDir): Environment
102102
private function load(string $templateName): TemplateWrapper
103103
{
104104
if (static::$twig === null) {
105-
static::$twig = self::getTwigEnvironment($this->config->getTempDir('twig'));
105+
$isDevEnv = $this->config->config->environment === 'development';
106+
static::$twig = self::getTwigEnvironment(CACHE_DIR . 'twig', $isDevEnv);
106107
}
107108

108109
try {
@@ -142,7 +143,7 @@ public function render(string $template, array $data = []): string
142143
public function disableCache(): void
143144
{
144145
if (static::$twig === null) {
145-
static::$twig = self::getTwigEnvironment(null);
146+
static::$twig = self::getTwigEnvironment(null, false);
146147
}
147148

148149
static::$twig->setCache(false);

tests/classes/ApplicationTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public function testRunWithConfigError(): void
3232
$config = $this->createMock(Config::class);
3333
$config->expects($this->once())->method('loadAndCheck')
3434
->willThrowException(new ConfigException('Failed to load phpMyAdmin configuration.'));
35+
$config->config = new Config\Settings([]);
3536

3637
$template = new Template($config);
3738
$expected = $template->render('error/generic', [

tests/classes/TemplateTest.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,11 @@ protected function setUp(): void
3737
*/
3838
public function testGetTwigEnvironment(): void
3939
{
40-
$config = Config::getInstance();
41-
$config->settings['environment'] = 'production';
42-
$twig = Template::getTwigEnvironment(null);
40+
$twig = Template::getTwigEnvironment(null, false);
4341
$this->assertFalse($twig->isDebug());
4442
$this->assertFalse(TransNode::$enableAddDebugInfo);
45-
$config->settings['environment'] = 'development';
46-
$twig = Template::getTwigEnvironment(null);
43+
44+
$twig = Template::getTwigEnvironment(null, true);
4745
$this->assertTrue($twig->isDebug());
4846
$this->assertTrue(TransNode::$enableAddDebugInfo);
4947
}
@@ -169,14 +167,15 @@ public static function providerTestRenderGettext(): array
169167
#[PreserveGlobalState(false)]
170168
public function testLoadingTwigEnvOnlyOnce(): void
171169
{
172-
$config = $this->createMock(Config::class);
173-
$config->expects($this->once())->method('getTempDir')->with($this->equalTo('twig'))->willReturn(null);
174-
175-
$template = new Template($config);
170+
$twigEnvCacheProperty = new ReflectionProperty(Template::class, 'twig');
171+
$twigEnvCacheProperty->setValue(null, null);
172+
$template = new Template();
176173
$this->assertSame("static content\n", $template->render('test/static'));
177-
178-
$template2 = new Template($config);
174+
$twigEnv = $twigEnvCacheProperty->getValue();
175+
$this->assertInstanceOf(Environment::class, $twigEnv);
176+
$template2 = new Template();
179177
$this->assertSame("static content\n", $template2->render('test/static'));
178+
$this->assertSame($twigEnv, $twigEnvCacheProperty->getValue());
180179
}
181180

182181
public function testDisableCache(): void

0 commit comments

Comments
 (0)