[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"page-\u002Fv1\u002Fadapters\u002Fsymfony\u002Fcomposition-root":3},{"id":4,"title":5,"body":6,"description":168,"extension":169,"meta":170,"navigation":171,"path":172,"seo":173,"stem":174,"__hash__":175},"content\u002Fv1\u002Fadapters\u002Fsymfony\u002Fcomposition-root.md","Symfony composition root",{"type":7,"value":8,"toc":163},"minimark",[9,13,48,59,64,86,90,133,136,140,159],[10,11,5],"h1",{"id":12},"symfony-composition-root",[14,15,16],"blockquote",{},[17,18,19,23,24,27,28,31,34,35,42,43],"p",{},[20,21,22],"strong",{},"Host:"," Symfony ",[20,25,26],{},"8.1.x"," (PHP ≥ 8.4) · Researched 2026-08",[29,30],"br",{},[20,32,33],{},"One-shot:"," ",[36,37,39],"a",{"href":38},"\u002Fapply\u002Fsymfony.full.md",[40,41,38],"code",{}," · Short: ",[36,44,46],{"href":45},"\u002Fsymfony",[40,47,45],{},[17,49,50,51,54,55,58],{},"Composition root = DI configuration and optional bundle ",[40,52,53],{},"Extension"," \u002F compiler passes — ",[20,56,57],{},"wiring only",".",[60,61,63],"h2",{"id":62},"typical-places","Typical places",[65,66,67,77,83],"ul",{},[68,69,70,73,74],"li",{},[40,71,72],{},"config\u002Fservices.yaml"," and ",[40,75,76],{},"config\u002Fservices\u002F{module}.yaml",[68,78,79,80],{},"Bundle ",[40,81,82],{},"Resources\u002Fconfig\u002Fservices.php",[68,84,85],{},"Autowire Infra\u002FUI; bind Domain ports explicitly to ACL\u002Fpersistence adapters",[60,87,89],{"id":88},"example","Example",[91,92,97],"pre",{"className":93,"code":94,"language":95,"meta":96,"style":96},"language-yaml shiki shiki-themes github-light github-dark","services:\n  App\\Ordering\\Domain\\Ports\\Acl\\WarehouseAvailabilityPortInterface:\n    alias: App\\Ordering\\Infrastructure\\ExternalServices\\WarehouseAvailabilityAclAdapter\n","yaml","",[40,98,99,112,120],{"__ignoreMap":96},[100,101,104,108],"span",{"class":102,"line":103},"line",1,[100,105,107],{"class":106},"s9eBZ","services",[100,109,111],{"class":110},"sVt8B",":\n",[100,113,115,118],{"class":102,"line":114},2,[100,116,117],{"class":106},"  App\\Ordering\\Domain\\Ports\\Acl\\WarehouseAvailabilityPortInterface",[100,119,111],{"class":110},[100,121,123,126,129],{"class":102,"line":122},3,[100,124,125],{"class":106},"    alias",[100,127,128],{"class":110},": ",[100,130,132],{"class":131},"sZZnC","App\\Ordering\\Infrastructure\\ExternalServices\\WarehouseAvailabilityAclAdapter\n",[17,134,135],{},"Do not put business rules in compiler passes.",[60,137,139],{"id":138},"related","Related",[65,141,142,148],{},[68,143,144],{},[36,145,147],{"href":146},"\u002Fv1\u002Fadapters\u002Fsymfony","Symfony adapter overview",[68,149,150,154,155],{},[36,151,153],{"href":152},"\u002Fv1\u002Fcore","Core"," · ",[36,156,158],{"href":157},"\u002Fv1\u002Fadopt\u002Fapply","Apply index",[160,161,162],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":96,"searchDepth":114,"depth":114,"links":164},[165,166,167],{"id":62,"depth":114,"text":63},{"id":88,"depth":114,"text":89},{"id":138,"depth":114,"text":139},"DI \u002F wiring only — config\u002Fservices*.yaml + bundle Extension.","md",{},true,"\u002Fv1\u002Fadapters\u002Fsymfony\u002Fcomposition-root",{"title":5,"description":168},"v1\u002Fadapters\u002Fsymfony\u002Fcomposition-root","r5FfQx05BkgkoJtTXeUBYqtEyvwo4RbxmYmgEYFBQsw",1786241414227]