This is development (master) version.
For production version (relase) see
http://github.com/cyrhla/container/tree/v0.0.1
- Version: 0.0.1-dev
- Technologies:
- JavaScript
- Copyright / Authors:
- Krystian Pietruszka kpietru@cyrhla.com
- Licenses:
- Download: http://github.com/cyrhla/container/releases
- Homepage: http://www.cyrhla.com
- More: package.json
The "container" is a simple key/value map for dependency injection (DI).
npm install @cyrhla/container
Simple example*:
const Container = require('@cyrhla/container/Container')
const ServiceBag = require('@cyrhla/container/Bag/ServiceBag')
var container = new Container()
var serviceFoo = new ServiceBag('@some/module/Foo', [1, 2, 3])
container.set('services.foo', serviceFoo)
// ...
var foo = container.get('services.foo')
// ...
The more complicated example*:
const Container = require('@cyrhla/container/Container')
const ServiceBag = require('@cyrhla/container/Bag/ServiceBag')
const CallBag = require('@cyrhla/container/Bag/CallBag')
var container = new Container()
var serviceFoo = new ServiceBag('@some/module/Foo', [1, 2, 3])
.setAlias('some')
.addCall(new CallBag('someMethod1', []))
.addCall(new CallBag('someMethod2', [123]))
.addListener('emit_name', new CallBag('logMethod', ['abc']))
.setPublic(true)
container.set('services.foo', serviceFoo)
// ...
var foo = container.get('services.foo')
// ...
Simple example, raw*:
const Container = require('@cyrhla/container/Container')
var container = new Container()
var serviceFoo = {
class: '@some/module/Foo'
}
container.set('services.foo', serviceFoo)
// ...
var foo = container.get('services.foo')
// ...
The more complicated example, raw with the replacement keys and listeners*:
const Container = require('@cyrhla/container/Container')
const EventEmitter = require('events')
var container = new Container()
var emitter = new EventEmitter()
container.addEmitter(emitter)
container.set('parameters.arg1', 123)
container.set('parameters.arg2', 'abc')
var serviceFoo = {
class: '@some/module/Foo',
alias: 'some',
calls: [
['someMethod1', []],
['someMethod2', ['%parameters.arg1%']]
],
addListener: {
emit_name: [
['logMethod', ['%parameters.arg2%']]
]
},
public: true
}
container.set('services.foo', serviceFoo)
// ...
var foo = container.get('services.foo')
// ...
- Container()
- has( string: key ): boolean
- set( string: key, mixed: value ): self
- get( string: key ): mixed
- prepare( object: data ): self
- addEmitter( EventEmitter: emitter ): self
- ServiceBag( string: className, mixed[]: args = [] )
- getClassName(): string
- getArguments(): mixed[]
- setAlias( string: alias ): self
- getAlias(): null|string
- setProperty( string: property, mixed: value ): self
- getProperties(): object
- addCall( string|CallBag: method, mixed[]: args = [] ): self
- getCalls(): CallBag[]
- addListener( string: event, string|CallBag: method, mixed[]: args = []): self
- getListeners(): object
- setPublic( boolean: publ ): self
- isPublic(): boolean
- static createFromObject( object: raw ): object
- ListenerBag( string: key, string|CallBag: method, mixed[]: args = [] )
- getKey(): string
- getCall(): CallBag
- static createFromObject( object: raw ): object
- CallBag( string: methodName, mixed[]: args = [] )
- getMethodName(): string
- getArguments(): mixed[]
[*] Paths should be modified to the module.