ContainerResolveNonInstantiableTest.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace Illuminate\Tests\Container;
  3. use Illuminate\Container\Container;
  4. use PHPUnit\Framework\TestCase;
  5. class ContainerResolveNonInstantiableTest extends TestCase
  6. {
  7. public function testResolvingNonInstantiableWithDefaultRemovesWiths()
  8. {
  9. $container = new Container;
  10. $object = $container->make(ParentClass::class, ['i' => 42]);
  11. $this->assertSame(42, $object->i);
  12. }
  13. public function testResolvingNonInstantiableWithVariadicRemovesWiths()
  14. {
  15. $container = new Container;
  16. $parent = $container->make(VariadicParentClass::class, ['i' => 42]);
  17. $this->assertCount(0, $parent->child->objects);
  18. $this->assertSame(42, $parent->i);
  19. }
  20. }
  21. interface TestInterface
  22. {
  23. }
  24. class ParentClass
  25. {
  26. /**
  27. * @var int
  28. */
  29. public $i;
  30. public function __construct(TestInterface $testObject = null, int $i = 0)
  31. {
  32. $this->i = $i;
  33. }
  34. }
  35. class VariadicParentClass
  36. {
  37. /**
  38. * @var \Illuminate\Tests\Container\ChildClass
  39. */
  40. public $child;
  41. /**
  42. * @var int
  43. */
  44. public $i;
  45. public function __construct(ChildClass $child, int $i = 0)
  46. {
  47. $this->child = $child;
  48. $this->i = $i;
  49. }
  50. }
  51. class ChildClass
  52. {
  53. /**
  54. * @var array
  55. */
  56. public $objects;
  57. public function __construct(TestInterface ...$objects)
  58. {
  59. $this->objects = $objects;
  60. }
  61. }