Skip to content

Commit db2f7fb

Browse files
committed
Deprecated BrokerAwareExtension
1 parent f2f79f9 commit db2f7fb

4 files changed

+22
-32
lines changed

src/Reflection/BrokerAwareExtension.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
use PHPStan\Broker\Broker;
66

7-
/** @api */
7+
/**
8+
* @api
9+
* @deprecated Inject PHPStan\Reflection\ReflectionProvider into the constructor instead
10+
*/
811
interface BrokerAwareExtension
912
{
1013

src/Reflection/Php/UniversalObjectCratesClassReflectionExtension.php

+5-10
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,34 @@
22

33
namespace PHPStan\Reflection\Php;
44

5-
use PHPStan\Broker\Broker;
65
use PHPStan\Reflection\ClassReflection;
76
use PHPStan\Reflection\ParametersAcceptorSelector;
87
use PHPStan\Reflection\PropertyReflection;
98
use PHPStan\Reflection\ReflectionProvider;
109
use PHPStan\Type\MixedType;
1110

1211
class UniversalObjectCratesClassReflectionExtension
13-
implements \PHPStan\Reflection\PropertiesClassReflectionExtension, \PHPStan\Reflection\BrokerAwareExtension
12+
implements \PHPStan\Reflection\PropertiesClassReflectionExtension
1413
{
1514

1615
/** @var string[] */
1716
private array $classes;
1817

19-
private \PHPStan\Broker\Broker $broker;
18+
private ReflectionProvider $reflectionProvider;
2019

2120
/**
2221
* @param string[] $classes
2322
*/
24-
public function __construct(array $classes)
23+
public function __construct(ReflectionProvider $reflectionProvider, array $classes)
2524
{
25+
$this->reflectionProvider = $reflectionProvider;
2626
$this->classes = $classes;
2727
}
2828

29-
public function setBroker(Broker $broker): void
30-
{
31-
$this->broker = $broker;
32-
}
33-
3429
public function hasProperty(ClassReflection $classReflection, string $propertyName): bool
3530
{
3631
return self::isUniversalObjectCrate(
37-
$this->broker,
32+
$this->reflectionProvider,
3833
$this->classes,
3934
$classReflection
4035
);

src/Type/Php/TypeSpecifyingFunctionsDynamicReturnTypeExtension.php

+6-11
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,31 @@
66
use PHPStan\Analyser\Scope;
77
use PHPStan\Analyser\TypeSpecifier;
88
use PHPStan\Analyser\TypeSpecifierAwareExtension;
9-
use PHPStan\Broker\Broker;
10-
use PHPStan\Reflection\BrokerAwareExtension;
119
use PHPStan\Reflection\FunctionReflection;
1210
use PHPStan\Reflection\ParametersAcceptorSelector;
11+
use PHPStan\Reflection\ReflectionProvider;
1312
use PHPStan\Rules\Comparison\ImpossibleCheckTypeHelper;
1413
use PHPStan\Type\Constant\ConstantBooleanType;
1514
use PHPStan\Type\DynamicFunctionReturnTypeExtension;
1615
use PHPStan\Type\Type;
1716

18-
class TypeSpecifyingFunctionsDynamicReturnTypeExtension implements DynamicFunctionReturnTypeExtension, TypeSpecifierAwareExtension, BrokerAwareExtension
17+
class TypeSpecifyingFunctionsDynamicReturnTypeExtension implements DynamicFunctionReturnTypeExtension, TypeSpecifierAwareExtension
1918
{
2019

2120
private bool $treatPhpDocTypesAsCertain;
2221

23-
private \PHPStan\Broker\Broker $broker;
22+
private ReflectionProvider $reflectionProvider;
2423

2524
private \PHPStan\Analyser\TypeSpecifier $typeSpecifier;
2625

2726
private ?\PHPStan\Rules\Comparison\ImpossibleCheckTypeHelper $helper = null;
2827

29-
public function __construct(bool $treatPhpDocTypesAsCertain)
28+
public function __construct(ReflectionProvider $reflectionProvider, bool $treatPhpDocTypesAsCertain)
3029
{
30+
$this->reflectionProvider = $reflectionProvider;
3131
$this->treatPhpDocTypesAsCertain = $treatPhpDocTypesAsCertain;
3232
}
3333

34-
public function setBroker(Broker $broker): void
35-
{
36-
$this->broker = $broker;
37-
}
38-
3934
public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void
4035
{
4136
$this->typeSpecifier = $typeSpecifier;
@@ -89,7 +84,7 @@ public function getTypeFromFunctionCall(
8984
private function getHelper(): ImpossibleCheckTypeHelper
9085
{
9186
if ($this->helper === null) {
92-
$this->helper = new ImpossibleCheckTypeHelper($this->broker, $this->typeSpecifier, $this->broker->getUniversalObjectCratesClasses(), $this->treatPhpDocTypesAsCertain);
87+
$this->helper = new ImpossibleCheckTypeHelper($this->reflectionProvider, $this->typeSpecifier, $this->reflectionProvider->getUniversalObjectCratesClasses(), $this->treatPhpDocTypesAsCertain);
9388
}
9489

9590
return $this->helper;

tests/PHPStan/Reflection/Php/UniversalObjectCratesClassReflectionExtensionTest.php

+7-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace PHPStan\Reflection\Php;
44

5-
use PHPStan\Broker\Broker;
65
use PHPStan\Type\ObjectType;
76
use PHPStan\Type\StringType;
87

@@ -11,35 +10,33 @@ class UniversalObjectCratesClassReflectionExtensionTest extends \PHPStan\Testing
1110

1211
public function testNonexistentClass(): void
1312
{
14-
$broker = self::getContainer()->getByType(Broker::class);
15-
$extension = new UniversalObjectCratesClassReflectionExtension([
13+
$reflectionProvider = $this->createReflectionProvider();
14+
$extension = new UniversalObjectCratesClassReflectionExtension($reflectionProvider, [
1615
'NonexistentClass',
1716
'stdClass',
1817
]);
19-
$extension->setBroker($broker);
20-
$this->assertTrue($extension->hasProperty($broker->getClass(\stdClass::class), 'foo'));
18+
$this->assertTrue($extension->hasProperty($reflectionProvider->getClass(\stdClass::class), 'foo'));
2119
}
2220

2321
public function testDifferentGetSetType(): void
2422
{
2523
require_once __DIR__ . '/data/universal-object-crates.php';
2624

27-
$broker = self::getContainer()->getByType(Broker::class);
28-
$extension = new UniversalObjectCratesClassReflectionExtension([
25+
$reflectionProvider = $this->createReflectionProvider();
26+
$extension = new UniversalObjectCratesClassReflectionExtension($reflectionProvider, [
2927
'UniversalObjectCreates\DifferentGetSetTypes',
3028
]);
31-
$extension->setBroker($broker);
3229

3330
$this->assertEquals(
3431
new ObjectType('UniversalObjectCreates\DifferentGetSetTypesValue'),
3532
$extension
36-
->getProperty($broker->getClass('UniversalObjectCreates\DifferentGetSetTypes'), 'foo')
33+
->getProperty($reflectionProvider->getClass('UniversalObjectCreates\DifferentGetSetTypes'), 'foo')
3734
->getReadableType()
3835
);
3936
$this->assertEquals(
4037
new StringType(),
4138
$extension
42-
->getProperty($broker->getClass('UniversalObjectCreates\DifferentGetSetTypes'), 'foo')
39+
->getProperty($reflectionProvider->getClass('UniversalObjectCreates\DifferentGetSetTypes'), 'foo')
4340
->getWritableType()
4441
);
4542
}

0 commit comments

Comments
 (0)