|
1 | | -# Container Interoperability |
| 1 | +# PSR Container |
2 | 2 |
|
3 | | -[](https://packagist.org/packages/container-interop/container-interop) |
4 | | -[](https://packagist.org/packages/container-interop/container-interop) |
| 3 | +This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md). |
5 | 4 |
|
6 | | -*container-interop* tries to identify and standardize features in *container* objects (service locators, |
7 | | -dependency injection containers, etc.) to achieve interoperability. |
8 | | - |
9 | | -Through discussions and trials, we try to create a standard, made of common interfaces but also recommendations. |
10 | | - |
11 | | -If PHP projects that provide container implementations begin to adopt these common standards, then PHP |
12 | | -applications and projects that use containers can depend on the common interfaces instead of specific |
13 | | -implementations. This facilitates a high-level of interoperability and flexibility that allows users to consume |
14 | | -*any* container implementation that can be adapted to these interfaces. |
15 | | - |
16 | | -The work done in this project is not officially endorsed by the [PHP-FIG](http://www.php-fig.org/), but it is being |
17 | | -worked on by members of PHP-FIG and other good developers. We adhere to the spirit and ideals of PHP-FIG, and hope |
18 | | -this project will pave the way for one or more future PSRs. |
19 | | - |
20 | | - |
21 | | -## Installation |
22 | | - |
23 | | -You can install this package through Composer: |
24 | | - |
25 | | -```json |
26 | | -composer require container-interop/container-interop |
27 | | -``` |
28 | | - |
29 | | -The packages adheres to the [SemVer](http://semver.org/) specification, and there will be full backward compatibility |
30 | | -between minor versions. |
31 | | - |
32 | | -## Standards |
33 | | - |
34 | | -### Available |
35 | | - |
36 | | -- [`ContainerInterface`](src/Interop/Container/ContainerInterface.php). |
37 | | -[Description](docs/ContainerInterface.md) [Meta Document](docs/ContainerInterface-meta.md). |
38 | | -Describes the interface of a container that exposes methods to read its entries. |
39 | | -- [*Delegate lookup feature*](docs/Delegate-lookup.md). |
40 | | -[Meta Document](docs/Delegate-lookup-meta.md). |
41 | | -Describes the ability for a container to delegate the lookup of its dependencies to a third-party container. This |
42 | | -feature lets several containers work together in a single application. |
43 | | - |
44 | | -### Proposed |
45 | | - |
46 | | -View open [request for comments](https://github.com/container-interop/container-interop/labels/RFC) |
47 | | - |
48 | | -## Compatible projects |
49 | | - |
50 | | -### Projects implementing `ContainerInterface` |
51 | | - |
52 | | -- [Acclimate](https://github.com/jeremeamia/acclimate-container): Adapters for |
53 | | - Aura.Di, Laravel, Nette DI, Pimple, Symfony DI, ZF2 Service manager, ZF2 |
54 | | - Dependency injection and any container using `ArrayAccess` |
55 | | -- [Aura.Di](https://github.com/auraphp/Aura.Di) |
56 | | -- [auryn-container-interop](https://github.com/elazar/auryn-container-interop) |
57 | | -- [Burlap](https://github.com/codeeverything/burlap) |
58 | | -- [Chernozem](https://github.com/pyrsmk/Chernozem) |
59 | | -- [Disco](https://github.com/bitexpert/disco) |
60 | | -- [InDI](https://github.com/idealogica/indi) |
61 | | -- [League/Container](http://container.thephpleague.com/) |
62 | | -- [Mouf](http://mouf-php.com) |
63 | | -- [Njasm Container](https://github.com/njasm/container) |
64 | | -- [PHP-DI](http://php-di.org) |
65 | | -- [Picotainer](https://github.com/thecodingmachine/picotainer) |
66 | | -- [PimpleInterop](https://github.com/moufmouf/pimple-interop) |
67 | | -- [Pimple3-ContainerInterop](https://github.com/Sam-Burns/pimple3-containerinterop) (using Pimple v3) |
68 | | -- [SitePoint Container](https://github.com/sitepoint/Container) |
69 | | -- [Thruster Container](https://github.com/ThrusterIO/container) (PHP7 only) |
70 | | -- [Ultra-Lite Container](https://github.com/ultra-lite/container) |
71 | | -- [Unbox](https://github.com/mindplay-dk/unbox) |
72 | | -- [XStatic](https://github.com/jeremeamia/xstatic) |
73 | | -- [Zend\ServiceManager](https://github.com/zendframework/zend-servicemanager) |
74 | | -- [Zit](https://github.com/inxilpro/Zit) |
75 | | - |
76 | | -### Projects implementing the *delegate lookup* feature |
77 | | - |
78 | | -- [Burlap](https://github.com/codeeverything/burlap) |
79 | | -- [Chernozem](https://github.com/pyrsmk/Chernozem) |
80 | | -- [InDI](https://github.com/idealogica/indi) |
81 | | -- [League/Container](http://container.thephpleague.com/) |
82 | | -- [Mouf](http://mouf-php.com) |
83 | | -- [Picotainer](https://github.com/thecodingmachine/picotainer) |
84 | | -- [PHP-DI](http://php-di.org) |
85 | | -- [PimpleInterop](https://github.com/moufmouf/pimple-interop) |
86 | | -- [Ultra-Lite Container](https://github.com/ultra-lite/container) |
87 | | - |
88 | | -### Middlewares implementing `ContainerInterface` |
89 | | - |
90 | | -- [Alias-Container](https://github.com/thecodingmachine/alias-container): add |
91 | | - aliases support to any container |
92 | | -- [Prefixer-Container](https://github.com/thecodingmachine/prefixer-container): |
93 | | - dynamically prefix identifiers |
94 | | -- [Lazy-Container](https://github.com/snapshotpl/lazy-container): lazy services |
95 | | - |
96 | | -### Projects using `ContainerInterface` |
97 | | - |
98 | | -The list below contains only a sample of all the projects consuming `ContainerInterface`. For a more complete list have a look [here](http://packanalyst.com/class?q=Interop%5CContainer%5CContainerInterface). |
99 | | - |
100 | | -| | Downloads | |
101 | | -| --- | --- | |
102 | | -| [Adroit](https://github.com/bitexpert/adroit) |  | |
103 | | -| [blast-facades](https://github.com/phpthinktank/blast-facades): Minimize complexity and represent dependencies as facades. |  | |
104 | | -| [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di): an extension to [Silex](http://silex.sensiolabs.org/) that adds support for any *container-interop* compatible container |  | |
105 | | -| [mindplay/walkway](https://github.com/mindplay-dk/walkway): a modular request router |  | |
106 | | -| [mindplay/middleman](https://github.com/mindplay-dk/middleman): minimalist PSR-7 middleware dispatcher |  | |
107 | | -| [PHP-DI/Invoker](https://github.com/PHP-DI/Invoker): extensible and configurable invoker/dispatcher |  | |
108 | | -| [Prophiler](https://github.com/fabfuel/prophiler) |  | |
109 | | -| [Silly](https://github.com/mnapoli/silly): CLI micro-framework |  | |
110 | | -| [Slim v3](https://github.com/slimphp/Slim) |  | |
111 | | -| [Splash](http://mouf-php.com/packages/mouf/mvc.splash-common/version/8.0-dev/README.md) |  | |
112 | | -| [Woohoo Labs. Harmony](https://github.com/woohoolabs/harmony): a flexible micro-framework |  | |
113 | | -| [zend-expressive](https://github.com/zendframework/zend-expressive) |  | |
114 | | - |
115 | | - |
116 | | -## Workflow |
117 | | - |
118 | | -Everyone is welcome to join and contribute. |
119 | | - |
120 | | -The general workflow looks like this: |
121 | | - |
122 | | -1. Someone opens a discussion (GitHub issue) to suggest an interface |
123 | | -1. Feedback is gathered |
124 | | -1. The interface is added to a development branch |
125 | | -1. We release alpha versions so that the interface can be experimented with |
126 | | -1. Discussions and edits ensue until the interface is deemed stable by a general consensus |
127 | | -1. A new minor version of the package is released |
128 | | - |
129 | | -We try to not break BC by creating new interfaces instead of editing existing ones. |
130 | | - |
131 | | -While we currently work on interfaces, we are open to anything that might help towards interoperability, may that |
132 | | -be code, best practices, etc. |
| 5 | +Note that this is not a container implementation of its own. See the specification for more details. |
0 commit comments