Skip to content

Commit 8c392ab

Browse files
committed
annotations @Inject is deprecated (BC break)
1 parent 7c7362e commit 8c392ab

7 files changed

+31
-28
lines changed

src/DI/Helpers.php

+3
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ public static function prefixServiceName(mixed $config, string $namespace): mixe
202202

203203
/**
204204
* Returns an annotation value.
205+
* @deprecated
205206
*/
206207
public static function parseAnnotation(\Reflector $ref, string $name): ?string
207208
{
@@ -211,6 +212,8 @@ public static function parseAnnotation(\Reflector $ref, string $name): ?string
211212

212213
$re = '#[\s*]@' . preg_quote($name, '#') . '(?=\s|$)(?:[ \t]+([^@\s]\S*))?#';
213214
if ($ref->getDocComment() && preg_match($re, trim($ref->getDocComment(), '/*'), $m)) {
215+
$alt = $name === 'inject' ? '#[Nette\DI\Attributes\Inject]' : 'alternative';
216+
trigger_error("Annotation @$name is deprecated, use $alt (used in " . Reflection::toString($ref) . ')', E_USER_DEPRECATED);
214217
return $m[1] ?? '';
215218
}
216219

tests/DI/Container.inject.properties.phpt

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
declare(strict_types=1);
88

99
use Nette\DI;
10+
use Nette\DI\Attributes\Inject;
1011
use Tester\Assert;
1112

1213

@@ -23,16 +24,16 @@ class Foo implements IFoo
2324

2425
class Test1
2526
{
26-
/** @inject */
27+
#[Inject]
2728
public stdClass $varA;
2829
}
2930

3031
class Test2 extends Test1
3132
{
32-
/** @inject */
33+
#[Inject]
3334
public stdClass $varC;
3435

35-
/** @inject */
36+
#[Inject]
3637
public IFoo $varD;
3738
}
3839

tests/DI/Helpers.parseAnnotation().phpt

+9-13
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
<?php
22

3-
/**
4-
* Test: Nette\DI\Helpers::expand()
5-
*/
6-
73
declare(strict_types=1);
84

95
use Nette\DI\Helpers;
@@ -22,10 +18,10 @@ class TestClass
2218

2319
$rc = new ReflectionClass(TestClass::class);
2420

25-
Assert::same('', Helpers::parseAnnotation($rc, 'inject'));
26-
Assert::same(null, Helpers::parseAnnotation($rc, 'injec'));
27-
Assert::same('type', Helpers::parseAnnotation($rc, 'var'));
28-
Assert::same('bool|int', Helpers::parseAnnotation($rc, 'return'));
21+
Assert::same('', @Helpers::parseAnnotation($rc, 'inject'));
22+
Assert::same(null, @Helpers::parseAnnotation($rc, 'injec'));
23+
Assert::same('type', @Helpers::parseAnnotation($rc, 'var'));
24+
Assert::same('bool|int', @Helpers::parseAnnotation($rc, 'return'));
2925

3026

3127
/** @return*/
@@ -35,7 +31,7 @@ class TestClass2
3531

3632
$rc = new ReflectionClass(TestClass2::class);
3733

38-
Assert::same('', Helpers::parseAnnotation($rc, 'return'));
34+
Assert::same('', @Helpers::parseAnnotation($rc, 'return'));
3935

4036

4137
/** @return
@@ -47,7 +43,7 @@ class TestClass3
4743

4844
$rc = new ReflectionClass(TestClass3::class);
4945

50-
Assert::same('', Helpers::parseAnnotation($rc, 'return'));
46+
Assert::same('', @Helpers::parseAnnotation($rc, 'return'));
5147

5248

5349
/**
@@ -59,6 +55,6 @@ class TestClass4
5955

6056
$rc = new ReflectionClass(TestClass4::class);
6157

62-
Assert::same(null, Helpers::parseAnnotation($rc, 'inject'));
63-
Assert::same(null, Helpers::parseAnnotation($rc, 'injec'));
64-
Assert::same(null, Helpers::parseAnnotation($rc, 'var'));
58+
Assert::same(null, @Helpers::parseAnnotation($rc, 'inject'));
59+
Assert::same(null, @Helpers::parseAnnotation($rc, 'injec'));
60+
Assert::same(null, @Helpers::parseAnnotation($rc, 'var'));

tests/DI/InjectExtension.basic.phpt

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
declare(strict_types=1);
88

99
use Nette\DI;
10+
use Nette\DI\Attributes\Inject;
1011
use Nette\DI\Definitions\Reference;
1112
use Nette\DI\Definitions\Statement;
1213
use Tester\Assert;
@@ -31,7 +32,7 @@ class ConcreteDependencyB extends AbstractDependency
3132

3233
class ParentClass
3334
{
34-
/** @inject */
35+
#[Inject]
3536
public stdClass $a;
3637

3738

@@ -47,10 +48,10 @@ class ParentClass
4748

4849
class Service extends ParentClass
4950
{
50-
/** @inject */
51+
#[Inject]
5152
public stdClass $c;
5253

53-
/** @inject */
54+
#[Inject]
5455
public AbstractDependency $e;
5556

5657

tests/DI/InjectExtension.errors.phpt

+6-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
declare(strict_types=1);
88

99
use Nette\DI;
10+
use Nette\DI\Attributes\Inject;
1011
use Nette\InvalidStateException;
1112
use Tester\Assert;
1213

@@ -16,35 +17,35 @@ require __DIR__ . '/../bootstrap.php';
1617

1718
class ServiceA
1819
{
19-
/** @inject */
20+
#[Inject]
2021
public DateTimeImmutable $a;
2122
}
2223

2324

2425
class ServiceB
2526
{
26-
/** @inject */
27+
#[Inject]
2728
public Unknown $a;
2829
}
2930

3031

3132
class ServiceC
3233
{
33-
/** @inject */
34+
#[Inject]
3435
public $a;
3536
}
3637

3738

3839
class ServiceD
3940
{
40-
/** @inject */
41+
#[Inject]
4142
protected $a;
4243
}
4344

4445

4546
class ServiceE
4647
{
47-
/** @inject */
48+
#[Inject]
4849
public static $a;
4950
}
5051

tests/DI/InjectExtension.getInjectProperties().phpt

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ use Tester\Assert;
1313

1414
class AClass
1515
{
16-
/** @inject */
16+
#[Inject]
1717
public AInjected $varA;
1818

19-
/** @inject */
19+
#[Inject]
2020
public BInjected $varB;
2121

2222
public $varD;
@@ -27,7 +27,7 @@ class AClass
2727

2828
class BadClass
2929
{
30-
/** @inject */
30+
#[Inject]
3131
public AClass|stdClass $var;
3232
}
3333

tests/DI/InjectExtension.getInjectProperties().traits.phpt

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ namespace A
1616
namespace B
1717
{
1818
use A\AInjected;
19+
use Nette\DI\Attributes\Inject;
1920

2021
trait BTrait
2122
{
22-
/** @inject */
23+
#[Inject]
2324
public AInjected $varA;
2425
}
2526
}

0 commit comments

Comments
 (0)