Skip to content

Commit 11d7c7e

Browse files
authored
wip (#36356)
1 parent 663f7e7 commit 11d7c7e

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ trait CompilesInjections
1212
*/
1313
protected function compileInject($expression)
1414
{
15-
$segments = explode(',', preg_replace("/[\(\)\\\"\']/", '', $expression));
15+
$segments = explode(',', preg_replace("/[\(\)]/", '', $expression));
1616

17-
$variable = trim($segments[0]);
17+
$variable = trim($segments[0], " '\"");
1818

1919
$service = trim($segments[1]);
2020

21-
return "<?php \${$variable} = app('{$service}'); ?>";
21+
return "<?php \${$variable} = app({$service}); ?>";
2222
}
2323
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Illuminate\Tests\View\Blade;
4+
5+
class BladeInjectTest extends AbstractBladeTestCase
6+
{
7+
public function testDependenciesInjectedAsStringsAreCompiled()
8+
{
9+
$string = "Foo @inject('baz', 'SomeNamespace\SomeClass') bar";
10+
$expected = "Foo <?php \$baz = app('SomeNamespace\SomeClass'); ?> bar";
11+
$this->assertEquals($expected, $this->compiler->compileString($string));
12+
}
13+
14+
public function testDependenciesInjectedAsStringsAreCompiledWhenInjectedWithDoubleQuotes()
15+
{
16+
$string = 'Foo @inject("baz", "SomeNamespace\SomeClass") bar';
17+
$expected = 'Foo <?php $baz = app("SomeNamespace\SomeClass"); ?> bar';
18+
$this->assertEquals($expected, $this->compiler->compileString($string));
19+
}
20+
21+
public function testDependenciesAreCompiled()
22+
{
23+
$string = "Foo @inject('baz', SomeNamespace\SomeClass::class) bar";
24+
$expected = "Foo <?php \$baz = app(SomeNamespace\SomeClass::class); ?> bar";
25+
$this->assertEquals($expected, $this->compiler->compileString($string));
26+
}
27+
28+
public function testDependenciesAreCompiledWithDoubleQuotes()
29+
{
30+
$string = 'Foo @inject("baz", SomeNamespace\SomeClass::class) bar';
31+
$expected = "Foo <?php \$baz = app(SomeNamespace\SomeClass::class); ?> bar";
32+
$this->assertEquals($expected, $this->compiler->compileString($string));
33+
}
34+
}

0 commit comments

Comments
 (0)