Comments (6)
The container retrieves items based on key name, if you add a key twice, one will override the other. It is down to your application to handle your key names.
from container.
Well, is it possible to get a list of registered key names then so I can throw an exception?
from container.
No that's not something you can do, keys are stored in several different ways and are also skewed if any delegate containers are enabled so it's impossible to give an accurate representation.
The container is aimed at storing and wiring together objects and services, it doesn't sound like this is what you're using it for?
from container.
I believe I am.
My architecture looks like this:
The main bot is running very bare bones with a DI and some basic functionality, and there are modules to extend the bot. Think composer packages.
When you install a module you register the ServiceProvider with the main $bot object. This serviceprovider can typically host a number of different classes such as commands or services.
Then you will be able to access the modules through $bot->mymodule->command()
But what if two packages happen to register two keys with the same names? Then it will break.
I guess I can create a function to look at the DI object or something before running addServiceProvider()
from container.
You can run the has
method to check a specific key, you just can't get a full list.
from container.
I had to drop the whole key idea, couldn't get a good design going. Since I ran into catch 22 because I could not get the key names.
Is there at least a function that can check if a serviceprovider is already registered?
Couldn't find any. And I can not access $this->bot->providers->registered since it is protected...
Or maybe I can just register the same provider multiple times, since it seems it does it for every class. Maybe it doesn't matter.
from container.
Related Issues (20)
- References are unallowed HOT 1
- Can't override a definition.
- Setting concrete does not reset arguments. HOT 4
- [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.