{
    "href": "/post/2026/02/03/ioc-interop-now-open-for-public-review/",
    "relId": "2026/02/03/ioc-interop-now-open-for-public-review",
    "title": "Ioc-Interop Now Open For Public Review",
    "author": "pmjones",
    "tags": [
        {
            "href": "/tag/programming/",
            "relId": "programming",
            "title": "Programming",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/php/",
            "relId": "php",
            "title": "PHP",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/interop/",
            "relId": "interop",
            "title": "Interop",
            "author": null,
            "created": "2025-02-03 20:11:59 UTC",
            "updated": [
                "2025-02-03 20:11:59 UTC"
            ],
            "markup": "markdown"
        }
    ],
    "created": "2026-02-03 14:04:36 UTC",
    "updated": [
        "2026-02-03 14:04:36 UTC",
        "2026-02-03 14:05:29 UTC"
    ],
    "markup": "markdown",
    "html": "<p>I am pleased to announce that the <a href=\"https://github.com/ioc-interop/interface\">Ioc-Interop</a> standard interface package is now open for public review.</p>\n<p>Ioc-Interop provides an interoperable package of standard interfaces for\ninversion-of-control (IOC) service container functionality. It reflects,\nrefines, and reconciles the common practices identified within\n<a href=\"https://github.com/ioc-interop/interface/blob/1.x/README-RESEARCH.md\">several pre-existing projects</a>.</p>\n<p>Ioc-Interop is functionally almost identical to PSR-11. However, Ioc-Interop\nis intended to contain only services (<code>object</code>). PSR-11 is intended to contain\nanything (<code>mixed</code>).</p>\n<p>Ioc-Interop also offers an <a href=\"https://github.com/ioc-interop/interface/#ioccontainerfactory\"><em>IocContainerFactory</em></a> interface, whereas PSR-11\noffers none.</p>\n<p>Ioc-Interop is focused on the concerns around <em>obtaining</em> and <em>consuming</em>\nservices.  The affordances for <em>managing</em> and <em>producing</em> services are a set of separate concerns.\nEarlier drafts of Ioc-Interop were much more expansive, including a resolver\nsubsystem and a service management subsystem. These have been extracted to\nseparate standards, each of which is dependent on Ioc-Interop:</p>\n<ul>\n<li><a href=\"https://github.com/service-interop/interface\">Service-Interop</a></li>\n<li><a href=\"https://github.com/resolver-interop/interface\">Resolver-interop</a></li>\n</ul>\n<p>This separation helps to maintain a boundary between the needs of service\nconsumers (afforded by Ioc-Interop) and service producers (afforded by\n<a href=\"https://github.com/service-interop/interface\">Service-Interop</a> and <a href=\"https://github.com/resolver-interop/interface\">Resolver-Interop</a>).</p>\n<p>Note that Ioc-Interop is independent of <a href=\"https://github.com/service-interop/interface\">Service-Interop</a> and\n<a href=\"https://github.com/resolver-interop/interface\">Resolver-Interop</a>. Ioc-Interop implementations can use them, or avoid them,\nas implementors see fit.</p>\n<p>The <a href=\"https://github.com/ioc-interop/impl/tree/1.x/src\">reference implementations</a> demonstrate how the interfaces can be used.</p>\n<p>Please offer your comments and criticism as <a href=\"https://github.com/ioc-interop/interface/issues\">issues or PRs out at Github</a>.</p>\n"
}
