tworząc kontener IoC,
Ty nie tworzysz kontenera IoC programistycznie, tylko możesz nadać tę właściwość IoC to odwrócenie kontroli, czyli na dany kontener wpyw ma FRAMEWORK, i to ty określasz czy ten framework ma miec wpływ na ten kontener poprzez np adnotacje, czy stosowanie go w projekcie.
Mozesz tez utworzyc wlasne klasy konfiguracyjne i wtedy niejako ty tworzysz konfiguracje, ale poprzez "meta-dane" adnotacje musisz to wykorzystać, to nie polega na tym, że tworzysz sam obiekty i nadajesz im właściwości własnie to daje nam IOC czyli odwrócenie sterowania aplikacją od programisty na rzecz frameworku
powinienem stworzyć jeden kontener w pliku index.php w który zarejestruje wszystkie zależności i będę go używał globalnie, czy powinienem to rozbić w jakiś sposób?
Nie jest to wymagane, to zależy od twojej architektóry, moim zdaniem nawet pakowanie konfiguracji do 1 pliku to nie bardzo, chyba żeby do 1 pakietu, gdzie osobno mamy konfiguracje np - warstwy Controlerów, bazy, etc.
Natomiast ładowanie konfiguracji można zawszeć w 1 pliku
parametry zależne od pewnych działań wykonywanych w aplikacji np
oznacza to że coś w twojej aplikacji jest nie tak, skoro do prawidłowego działania komponentu potrzebujesz ZMIANY STANU, gdzie generalnie bazowe klasy powinny byc bez stanowe i niezależne od "klas zewnętrznych"
Cięzko odpowiedzieć czy powinieneś modyfikować kontener, powinieneś rozważyć przypadek np. LAZY LOADING, albo ... WZORCA PROXY, który - zadziała w pewien sposób na oczekiwanie ? Trudno powiedzieć nie znając samej aplikacji, mozliwości rozwiązania jest wiele, można wstrzykiwać dany obiekt też zależnie tylko OD PEWNYCH ZDEFYINIOWANYCH "zachowań"