Adonis Binding Resolver
Adonis binding resolver is a thin module to validate, resolve and execute bindings attached as a closure or IoC container binding.
For example: A route handler can point to closure
or reference to controller method.
Route // or Route
Now manually parsing the 2nd argument can become a little gross as you have to take care of following things.
- Validate the argument to make sure it is a function or a string only.
- If 2nd argument is a function, make sure to execute it as a function.
- If it is a string, parse the string and fetch the right module and function of the string.
- Also make sure that string argument method has correct reference to the scope
this
.
This module takes care of all this for you.
Validate Binding
const Resolver = const Ioc = Iocconst resolver = Ioc Ioc // works fineIoc // works fineIoc // throws exceptionIoc // throws exceptionIoc // throws exceptionIoc // throws exception, since method is not defined
Resolve Binding
const Resolver = const Ioc = Iocconst resolver = Ioc Ioc // returns {instance: HomeController, method: 'index'} Ioc // returns function () {}
Execute Binding
Executing binding will automatically resolve it for you. Just make sure to call validatingBinding
first.
const Resolver = const Ioc = Iocconst resolver = Ioc Ioc // make sure binding is fine const result = Iocconsole
Passing Data when executing
You can also pass data when executing a binding. Data is passed as an array, which is passed as multiple arguments to the resolved method using apply
method.
const request = {} // your http requestconst response = {} // your http responseconst result = Ioc
Passing custom scope
At times you may want to override the current instance of a module/class and pass your own custom instance. Same can be done by passing 3rd argument to the executeBinding
method.
const modelInstance = {}const result = Ioc
Used By
This module is used by
- adonis-framework
- adonis-lucid
- adonis-redis