Comments (4)
from container.
Basically I want some of the implementations for interfaces in application to be configurable by user. Application provides all the defaults, so it can run out of the box, but user can prepare yaml file which is parsed at startup and turned into appropriate definitions in the container.
I don't think I can have separate definitions. The rest of the application depends on autowiring so I need to use interface names as ids.
I can think of workarounds (split container initialization into multiple phases and provide default only if it wasn't configured by user, or provide defaults with new
in constructors), but since the container already allows (at least partially) to modify definitions via setConcrete
i thought I could use that. Unfortunately setConcrete
leads to unexpected behaviour like described above.
from container.
Hi, it's not really designed to do that, the behaviour is expected as it's dealing with an existing definition, you'd be better having separate definitions and creating code to decide what alias it pulls from the container rather than messing with the container at runtime.
I'm gonna close this issue as what you're describing isn't really something that I'd plan to change, but happy to continue discussions.
from container.
Hi, that's ok.
I guess setConcrete
was added for the purpose of providing test doubles rather than actually editing the container, and changing that would add unnecessary complexity to the library.
from container.
Related Issues (20)
- References are unallowed HOT 1
- Can't override a definition.
- [2.x] Add support for PHP 8 HOT 2
- Extends causing an infinite loop HOT 1
- Inconsistent Behavior HOT 12
- Question: Possible to use tags in Service Providers? HOT 3
- Fatal error: incompatible declaration of get method against PSR interface, in some PHP versions HOT 5
- Returning from an inflector HOT 7
- Support for non-object concrete values HOT 3
- Question: How to "inflect once" for shared services? HOT 13
- Preceeding slash confusing fully qualified class names HOT 1
- Extends causing an infinite loop HOT 2
- Question: Can Container Change an Alias? HOT 1
- Huge performance hits when having a bigger application with a lot of service definitions HOT 6
- How swap added definition HOT 1
- Auto wiring a shared dependency HOT 1
- Infinate loop in resolving non-existant class HOT 1
- Question: How to achieve autowiring inside the service provider? HOT 1
- Is this package still maintained? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from container.