new ObjectContainer(namespace)
Initializes the object container.
Parameters:
Name | Type | Description |
---|---|---|
namespace |
ima.Namespace | The namespace container, used to access classes and values using their fully qualified names. |
Members
-
<static> APP_BINDING_STATE
-
Returns constant for app binding state.
When the object container is in app binding state, it is possible to register new aliases using the
bind()
method and register new constant using theconstant()
method, or override the default class dependencies of any already-configured class using theinject()
method (classes that were not configured yet may be configured using theinject()
method orprovide()
method). -
<static> IMA_BINDING_STATE
-
Returns constant for IMA binding state.
When the object container is in ima binding state, it is possible to register new aliases using the
bind()
method and register new constant using theconstant()
method, or override the default class dependencies of any already-configured class using theinject()
method (classes that were not configured yet may be configured using theinject()
method orprovide()
method). -
<static> PLUGIN_BINDING_STATE
-
Returns constant for plugin binding state.
When the object container is in plugin binding state, it is impossible to register new aliases using the
bind()
method and register new constant using theconstant()
method, or override the default class dependencies of any already-configured class using theinject()
method (classes that were not configured yet may be configured using theinject()
method orprovide()
method).This prevents the unpriviledged code (e.g. 3rd party plugins) from overriding the default dependency configuration provided by ima, or overriding the configuration of a 3rd party plugin by another 3rd party plugin.
The application itself has always access to the unlocked object container.
-
<nullable> _bindingState :string
-
The current binding state.
The
setBindingState()
method may be called for changing object container binding state only by the bootstrap script.Type:
- string
-
_entries :Map.<(string|function(new:*, ...*)|function(...*): *), Entry.<*>>
-
Type:
- Map.<(string|function(new:*, ...*)|function(...*): *), Entry.<*>>
-
_namespace :ima.Namespace
-
The namespace container, used to access classes and values using their fully qualified names.
Type:
- ima.Namespace
Methods
-
_createEntry(classConstructor [, dependencies], options)
-
Creates a new entry for the provided class or factory function, the provided dependencies and entry options.
Parameters:
Name Type Argument Description classConstructor
function | function The class constructor or factory function.
dependencies
Array.<*> <optional>
<nullable>
The dependencies to pass into the constructor or factory function.
options
Object Returns:
Created instance or generated value.
- Type
- T
-
_createInstanceFromEntry(entry [, dependencies])
-
Creates a new instance of the class or retrieves the value generated by the factory function represented by the provided entry, passing in the provided dependencies.
The method uses the dependencies specified by the entry if no custom dependencies are provided.
Parameters:
Name Type Argument Default Description entry
Entry.<T> The entry representing the class that should have its instance created or factory faction to use to create a value.
dependencies
Array.<*> <optional>
[] The dependencies to pass into the constructor or factory function.
Returns:
Created instance or generated value.
- Type
- T
-
_getEntry(name)
-
Retrieves the entry for the specified constant, alias, class or factory function, interface, or fully qualified namespace path (the method checks these in this order in case of a name clash).
The method retrieves an existing entry even if a qualified namespace path is provided (if the target class or interface has been configured in this object container).
The method throws an
Error
if no such constant, alias, registry, interface implementation is known to this object container and the provided identifier is not a valid namespace path specifying an existing class, interface or value.Parameters:
Name Type Description name
string | function Name of a constant or alias, factory function, class or interface constructor, or a fully qualified namespace path.
Throws:
-
If no such constant, alias, registry, interface implementation is known to this object container.
- Type
- Error
Returns:
The retrieved entry.
- Type
- Entry.<T>
-
-
_getEntryFromClassConstructor(classConstructor)
-
Retrieves the class denoted by the provided class constructor.
The method then checks whether there are defined
$dependecies
property for class. Then the class is registered to this object container.The method returns the entry for the class if the specified class does not have defined
$dependencies
property returnnull
.Parameters:
Name Type Description classConstructor
function Returns:
An entry representing the value at the specified classConstructor. The method returns
null
if the specified classConstructor does not have defined$dependencies
.- Type
- Entry.<T>
-
_getEntryFromConstant(compositionName)
-
Retrieves the constant value denoted by the provided fully qualified composition name.
The method returns the entry for the constant if the constant is registered with this object container, otherwise return
null
.Finally, if the constant composition name does not resolve to value, the method return
null
.Parameters:
Name Type Description compositionName
string Returns:
An entry representing the value at the specified composition name in the constants. The method returns
null
if the specified composition name does not exist in the constants.- Type
- Entry.<*>
-
_getEntryFromNamespace(path)
-
Retrieves the class denoted by the provided fully qualified name within the application namespace.
The method then checks whether there are dependecies configured for the class, no matter whether the class is an implementation class or an "interface" class.
The method returns the entry for the class if the class is registered with this object container, otherwise an unregistered entry is created and returned.
Finally, if the namespace path does not resolve to a class, the method return an unregistered entry resolved to the value denoted by the namespace path.
Alternatively, if a constructor function is passed in instead of a namespace path, the method returns
null
.Parameters:
Name Type Description path
string | function Namespace path pointing to a class or a value in the application namespace, or a constructor function.
Returns:
An entry representing the value or class at the specified path in the namespace. The method returns
null
if the specified path does not exist in the namespace.- Type
- Entry.<T>
-
_updateEntryValues(classConstructor, entry, dependencies)
-
The method update classConstructor and dependencies for defined entry. The entry throw Error for constants and if you try override dependencies more than once.
Parameters:
Name Type Description classConstructor
function | function The class constructor or factory function.
entry
Entry The entry representing the class that should have its instance created or factory faction to use to create a value.
dependencies
Array.<*> The dependencies to pass into the constructor or factory function.
-
bind(name, classConstructor [, dependencies])
-
Binds the specified class or factory function and dependencies to the specified alias. Binding a class or factory function to an alias allows the class or function to be specied as a dependency by specifying the alias and creating new instances by referring to the class or function by the alias.
Also note that the same class or function may be bound to several aliases and each may use different dependencies.
The alias will use the default dependencies bound for the class if no dependencies are provided.
Parameters:
Name Type Argument Description name
string Alias name.
classConstructor
function | function The class constructor or a factory function.
dependencies
Array.<*> <optional>
<nullable>
The dependencies to pass into the constructor or factory function.
Returns:
This object container.
- Type
- ObjectContainer
-
clear()
-
Clears all entries from this object container and resets the locking mechanism of this object container.
Returns:
This object container.
- Type
- ObjectContainer
-
constant(name, value)
-
Defines a new constant registered with this object container. Note that this is the only way of passing
string
values to constructors because the object container treats strings as class, interface, alias or constant names.Parameters:
Name Type Description name
string The constant name.
value
* The constant value.
Returns:
This object container.
- Type
- ObjectContainer
-
create(name, dependencies)
-
Creates a new instance of the class or retrieves the value generated by the factory function identified by the provided name, class, interface, or factory function, passing in the provided dependencies.
The method uses the dependencies specified when the class, interface or factory function has been registered with the object container if no custom dependencies are provided.
Parameters:
Name Type Argument Description name
string | function | function The name of the alias, class, interface, or the class, interface or a factory function to use.
dependencies
Array.<*> <nullable>
The dependencies to pass into the constructor or factory function.
Returns:
Created instance or generated value.
- Type
- T
-
get(name)
-
Retrieves the shared instance or value of the specified constant, alias, class or factory function, interface, or fully qualified namespace path (the method checks these in this order in case of a name clash).
The instance or value is created lazily the first time it is requested.
Parameters:
Name Type Description name
string | function | function The name of the alias, class, interface, or the class, interface or a factory function.
Returns:
The shared instance or value.
- Type
- T
-
getConstructorOf(name)
-
Returns the class constructor function of the specified class.
Parameters:
Name Type Description name
string | function The name by which the class is registered with this object container.
Returns:
The constructor function.
- Type
- function
-
has(name)
-
Returns
true
if the specified object, class or resource is registered with this object container.Parameters:
Name Type Description name
string | function The resource name.
Returns:
true
if the specified object, class or resource is registered with this object container.- Type
- boolean
-
inject(classConstructor, dependencies)
-
Configures the object loader with the specified default dependencies for the specified class.
New instances of the class created by this object container will receive the provided dependencies into constructor unless custom dependencies are provided.
Parameters:
Name Type Argument Description classConstructor
function The class constructor.
dependencies
Array.<*> <nullable>
The dependencies to pass into the constructor function.
Returns:
This object container.
- Type
- ObjectContainer
-
provide(interfaceConstructor, implementationConstructor, dependencies)
-
Configures the default implementation of the specified interface to use when an implementation provider of the specified interface is requested from this object container.
The implementation constructor will obtain the provided default dependencies or the dependencies provided to the
create()
method.Parameters:
Name Type Argument Description interfaceConstructor
function The constructor of the interface representing the service.
implementationConstructor
function The constructor of the class implementing the service interface.
dependencies
Array.<*> <nullable>
The dependencies to pass into the constructor function.
Returns:
This object container.
- Type
- ObjectContainer
-
setBindingState(bindingState)
-
Parameters:
Name Type Argument Description bindingState
string <nullable>