Skip to content

Commit bb1311b

Browse files
committed
Update docs
Signed-off-by: Felipe Sayão Lobato Abreu <github@mentordosnerds.com>
1 parent 105b541 commit bb1311b

1 file changed

Lines changed: 61 additions & 6 deletions

File tree

docs/providers/using-providers.rst

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,88 @@
11
Built-in Providers
22
==================
33

4+
45
FastForward Container provides ready-to-use provider classes to help you register services quickly:
56

67
- **ArrayServiceProvider**: Register factories and extensions using plain arrays.
78
- **AggregateServiceProvider**: Combine multiple providers into one.
89
- **ServiceProviderContainer**: Wraps a provider as a PSR-11 container.
910

10-
Basic Example
11-
-------------
11+
Examples
12+
--------
13+
14+
**ArrayServiceProvider**
15+
~~~~~~~~~~~~~~~~~~~~~~~
16+
Register factories and extensions using arrays:
1217

1318
.. code-block:: php
1419
1520
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
1621
use FastForward\Container\ServiceProviderContainer;
1722
1823
$provider = new ArrayServiceProvider([
19-
'foo' => fn() => new FooService(),
20-
'bar' => fn() => new BarService(),
24+
'foo' => fn() => new FooService(),
25+
'bar' => fn() => new BarService(),
26+
], [
27+
'foo' => function ($container, $previous) {
28+
$previous->setBar($container->get('bar'));
29+
return $previous;
30+
},
2131
]);
2232
2333
$container = new ServiceProviderContainer($provider);
2434
$foo = $container->get('foo');
2535
26-
You can also use the ``container()`` helper function:
36+
Or using the ``container()`` helper:
2737

2838
.. code-block:: php
2939
3040
use FastForward\Container\container;
31-
3241
$container = container($provider);
3342
$foo = $container->get('foo');
43+
44+
**AggregateServiceProvider**
45+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
46+
Combine multiple providers into one:
47+
48+
.. code-block:: php
49+
50+
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
51+
use FastForward\Container\ServiceProvider\AggregateServiceProvider;
52+
use FastForward\Container\ServiceProviderContainer;
53+
54+
$providerA = new ArrayServiceProvider([
55+
'foo' => fn() => new FooService(),
56+
]);
57+
$providerB = new ArrayServiceProvider([
58+
'bar' => fn() => new BarService(),
59+
]);
60+
61+
$aggregate = new AggregateServiceProvider($providerA, $providerB);
62+
$container = new ServiceProviderContainer($aggregate);
63+
64+
$foo = $container->get('foo'); // from providerA
65+
$bar = $container->get('bar'); // from providerB
66+
67+
Or using the ``container()`` helper:
68+
69+
.. code-block:: php
70+
71+
$container = container($providerA, $providerB);
72+
$foo = $container->get('foo');
73+
$bar = $container->get('bar');
74+
75+
**ServiceProviderContainer**
76+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
77+
Wraps any ServiceProviderInterface as a PSR-11 container:
78+
79+
.. code-block:: php
80+
81+
use FastForward\Container\ServiceProvider\ArrayServiceProvider;
82+
use FastForward\Container\ServiceProviderContainer;
83+
84+
$provider = new ArrayServiceProvider([
85+
'foo' => fn() => new FooService(),
86+
]);
87+
$container = new ServiceProviderContainer($provider);
88+
$foo = $container->get('foo');

0 commit comments

Comments
 (0)