Skip to content

Commit 90ed27d

Browse files
authored
[10.x] Fix use statement compilation in Blade templates (#49479)
* Fix use statement compilation in Blade templates * added one more failing test * fix * fix typo
1 parent 8837c1f commit 90ed27d

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/Illuminate/View/Compilers/Concerns/CompilesUseStatements.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ protected function compileUse($expression)
1414
{
1515
$segments = explode(',', preg_replace("/[\(\)]/", '', $expression));
1616

17-
$use = trim($segments[0], " '\"");
17+
$use = ltrim(trim($segments[0], " '\""), '\\');
1818
$as = isset($segments[1]) ? ' as '.trim($segments[1], " '\"") : '';
1919

2020
return "<?php use \\{$use}{$as}; ?>";

tests/View/Blade/BladeUseTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,18 @@ public function testUseStatementsWithoutAsAreCompiled()
1717
$expected = "Foo <?php use \SomeNamespace\SomeClass; ?> bar";
1818
$this->assertEquals($expected, $this->compiler->compileString($string));
1919
}
20+
21+
public function testUseStatementsWithBackslashAtBeginningAreCompiled()
22+
{
23+
$string = "Foo @use('\SomeNamespace\SomeClass') bar";
24+
$expected = "Foo <?php use \SomeNamespace\SomeClass; ?> bar";
25+
$this->assertEquals($expected, $this->compiler->compileString($string));
26+
}
27+
28+
public function testUseStatementsWithBackslashAtBeginningAndAliasedAreCompiled()
29+
{
30+
$string = "Foo @use('\SomeNamespace\SomeClass', 'Foo') bar";
31+
$expected = "Foo <?php use \SomeNamespace\SomeClass as Foo; ?> bar";
32+
$this->assertEquals($expected, $this->compiler->compileString($string));
33+
}
2034
}

0 commit comments

Comments
 (0)