Skip to content

Commit f51af56

Browse files
committed
remove dependency on support
1 parent eb14349 commit f51af56

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

src/Illuminate/Container/Container.php

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,18 @@
1313
use Illuminate\Contracts\Container\Container as ContainerContract;
1414
use Illuminate\Contracts\Container\ContextualAttribute;
1515
use Illuminate\Contracts\Container\SelfBuilding;
16-
use Illuminate\Support\Traits\ReflectsClosures;
1716
use LogicException;
1817
use ReflectionAttribute;
1918
use ReflectionClass;
2019
use ReflectionException;
2120
use ReflectionFunction;
21+
use ReflectionIntersectionType;
2222
use ReflectionParameter;
23+
use ReflectionUnionType;
2324
use TypeError;
2425

2526
class Container implements ArrayAccess, ContainerContract
2627
{
27-
use ReflectsClosures;
28-
2928
/**
3029
* The current globally available container (if any).
3130
*
@@ -221,8 +220,6 @@ public function when($concrete)
221220
/**
222221
* Define a contextual binding based on an attribute.
223222
*
224-
* @param string $attribute
225-
* @param \Closure $handler
226223
* @return void
227224
*/
228225
public function whenHasAttribute(string $attribute, Closure $handler)
@@ -245,8 +242,6 @@ public function bound($abstract)
245242

246243
/**
247244
* {@inheritdoc}
248-
*
249-
* @return bool
250245
*/
251246
public function has(string $id): bool
252247
{
@@ -568,11 +563,44 @@ protected function bindBasedOnClosureReturnTypes($abstract, $concrete = null, $s
568563
}
569564
}
570565

566+
/**
567+
* Get the class names / types of the return type of the given Closure.
568+
*
569+
* @return list<class-string>
570+
*
571+
* @throws \ReflectionException
572+
*/
573+
protected function closureReturnTypes(Closure $closure)
574+
{
575+
$reflection = new ReflectionFunction($closure);
576+
577+
if ($reflection->getReturnType() === null ||
578+
$reflection->getReturnType() instanceof ReflectionIntersectionType) {
579+
return [];
580+
}
581+
582+
$types = $reflection->getReturnType() instanceof ReflectionUnionType
583+
? $reflection->getReturnType()->getTypes()
584+
: [$reflection->getReturnType()];
585+
586+
$returnTypes = [];
587+
588+
foreach ($types as $type) {
589+
if ($type->isBuiltin() ||
590+
in_array($type->getName(), ['static', 'self'])) {
591+
continue;
592+
}
593+
594+
$returnTypes[] = $type->getName();
595+
}
596+
597+
return $returnTypes;
598+
}
599+
571600
/**
572601
* "Extend" an abstract type in the container.
573602
*
574603
* @param string $abstract
575-
* @param \Closure $closure
576604
* @return void
577605
*
578606
* @throws \InvalidArgumentException
@@ -711,7 +739,6 @@ public function alias($abstract, $alias)
711739
* Bind a new callback to an abstract's rebind event.
712740
*
713741
* @param string $abstract
714-
* @param \Closure $callback
715742
* @return mixed
716743
*/
717744
public function rebinding($abstract, Closure $callback)
@@ -771,8 +798,6 @@ protected function getReboundCallbacks($abstract)
771798
/**
772799
* Wrap the given closure such that its dependencies will be injected when executed.
773800
*
774-
* @param \Closure $callback
775-
* @param array $parameters
776801
* @return \Closure
777802
*/
778803
public function wrap(Closure $callback, array $parameters = [])
@@ -848,7 +873,6 @@ public function factory($abstract)
848873
* @template TClass of object
849874
*
850875
* @param string|class-string<TClass>|callable $abstract
851-
* @param array $parameters
852876
* @return ($abstract is class-string<TClass> ? TClass : mixed)
853877
*
854878
* @throws \Illuminate\Contracts\Container\BindingResolutionException
@@ -864,7 +888,6 @@ public function makeWith($abstract, array $parameters = [])
864888
* @template TClass of object
865889
*
866890
* @param string|class-string<TClass> $abstract
867-
* @param array $parameters
868891
* @return ($abstract is class-string<TClass> ? TClass : mixed)
869892
*
870893
* @throws \Illuminate\Contracts\Container\BindingResolutionException
@@ -1297,7 +1320,6 @@ protected function getLastParameterOverride()
12971320
/**
12981321
* Resolve a non-class hinted primitive dependency.
12991322
*
1300-
* @param \ReflectionParameter $parameter
13011323
* @return mixed
13021324
*
13031325
* @throws \Illuminate\Contracts\Container\BindingResolutionException
@@ -1326,7 +1348,6 @@ protected function resolvePrimitive(ReflectionParameter $parameter)
13261348
/**
13271349
* Resolve a class based dependency from the container.
13281350
*
1329-
* @param \ReflectionParameter $parameter
13301351
* @return mixed
13311352
*
13321353
* @throws \Illuminate\Contracts\Container\BindingResolutionException
@@ -1367,7 +1388,6 @@ protected function resolveClass(ReflectionParameter $parameter)
13671388
/**
13681389
* Resolve a class based variadic dependency from the container.
13691390
*
1370-
* @param \ReflectionParameter $parameter
13711391
* @return mixed
13721392
*/
13731393
protected function resolveVariadicClass(ReflectionParameter $parameter)
@@ -1386,7 +1406,6 @@ protected function resolveVariadicClass(ReflectionParameter $parameter)
13861406
/**
13871407
* Resolve a dependency based on an attribute.
13881408
*
1389-
* @param \ReflectionAttribute $attribute
13901409
* @return mixed
13911410
*/
13921411
public function resolveFromAttribute(ReflectionAttribute $attribute)
@@ -1430,7 +1449,6 @@ protected function notInstantiable($concrete)
14301449
/**
14311450
* Throw an exception for an unresolvable primitive.
14321451
*
1433-
* @param \ReflectionParameter $parameter
14341452
* @return void
14351453
*
14361454
* @throws \Illuminate\Contracts\Container\BindingResolutionException
@@ -1446,7 +1464,6 @@ protected function unresolvablePrimitive(ReflectionParameter $parameter)
14461464
* Register a new before resolving callback for all types.
14471465
*
14481466
* @param \Closure|string $abstract
1449-
* @param \Closure|null $callback
14501467
* @return void
14511468
*/
14521469
public function beforeResolving($abstract, ?Closure $callback = null)
@@ -1466,7 +1483,6 @@ public function beforeResolving($abstract, ?Closure $callback = null)
14661483
* Register a new resolving callback.
14671484
*
14681485
* @param \Closure|string $abstract
1469-
* @param \Closure|null $callback
14701486
* @return void
14711487
*/
14721488
public function resolving($abstract, ?Closure $callback = null)
@@ -1486,7 +1502,6 @@ public function resolving($abstract, ?Closure $callback = null)
14861502
* Register a new after resolving callback for all types.
14871503
*
14881504
* @param \Closure|string $abstract
1489-
* @param \Closure|null $callback
14901505
* @return void
14911506
*/
14921507
public function afterResolving($abstract, ?Closure $callback = null)
@@ -1505,8 +1520,6 @@ public function afterResolving($abstract, ?Closure $callback = null)
15051520
/**
15061521
* Register a new after resolving attribute callback for all types.
15071522
*
1508-
* @param string $attribute
1509-
* @param \Closure $callback
15101523
* @return void
15111524
*/
15121525
public function afterResolvingAttribute(string $attribute, \Closure $callback)
@@ -1537,7 +1550,6 @@ protected function fireBeforeResolvingCallbacks($abstract, $parameters = [])
15371550
*
15381551
* @param string $abstract
15391552
* @param array $parameters
1540-
* @param array $callbacks
15411553
* @return void
15421554
*/
15431555
protected function fireBeforeCallbackArray($abstract, $parameters, array $callbacks)
@@ -1614,7 +1626,6 @@ public function fireAfterResolvingAttributeCallbacks(array $attributes, $object)
16141626
*
16151627
* @param string $abstract
16161628
* @param object $object
1617-
* @param array $callbacksPerType
16181629
* @return array
16191630
*/
16201631
protected function getCallbacksForType($abstract, $object, array $callbacksPerType)
@@ -1634,7 +1645,6 @@ protected function getCallbacksForType($abstract, $object, array $callbacksPerTy
16341645
* Fire an array of callbacks with an object.
16351646
*
16361647
* @param mixed $object
1637-
* @param array $callbacks
16381648
* @return void
16391649
*/
16401650
protected function fireCallbackArray($object, array $callbacks)
@@ -1797,7 +1807,6 @@ public static function getInstance()
17971807
/**
17981808
* Set the shared instance of the container.
17991809
*
1800-
* @param \Illuminate\Contracts\Container\Container|null $container
18011810
* @return \Illuminate\Contracts\Container\Container|static
18021811
*/
18031812
public static function setInstance(?ContainerContract $container = null)
@@ -1809,7 +1818,6 @@ public static function setInstance(?ContainerContract $container = null)
18091818
* Determine if a given offset exists.
18101819
*
18111820
* @param string $key
1812-
* @return bool
18131821
*/
18141822
public function offsetExists($key): bool
18151823
{
@@ -1820,7 +1828,6 @@ public function offsetExists($key): bool
18201828
* Get the value at a given offset.
18211829
*
18221830
* @param string $key
1823-
* @return mixed
18241831
*/
18251832
public function offsetGet($key): mixed
18261833
{
@@ -1832,7 +1839,6 @@ public function offsetGet($key): mixed
18321839
*
18331840
* @param string $key
18341841
* @param mixed $value
1835-
* @return void
18361842
*/
18371843
public function offsetSet($key, $value): void
18381844
{
@@ -1843,7 +1849,6 @@ public function offsetSet($key, $value): void
18431849
* Unset the value at a given offset.
18441850
*
18451851
* @param string $key
1846-
* @return void
18471852
*/
18481853
public function offsetUnset($key): void
18491854
{

src/Illuminate/Container/composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"require": {
1717
"php": "^8.2",
1818
"illuminate/contracts": "^12.0",
19-
"illuminate/support": "^12.0",
2019
"psr/container": "^1.1.1|^2.0.1",
2120
"symfony/polyfill-php84": "^1.33",
2221
"symfony/polyfill-php85": "^1.33"

0 commit comments

Comments
 (0)