Download the PHP package code-distortion/di-caller without Composer
On this page you can find all versions of the php package code-distortion/di-caller. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download code-distortion/di-caller
More information about code-distortion/di-caller
Files in code-distortion/di-caller
Package di-caller
Short Description A PHP package that calls callables/callbacks/hooks, using dependency injection to resolve their parameters
License MIT
Homepage https://github.com/code-distortion/di-caller
Informations about the package di-caller
DI Caller
code-distortion/di-caller is a PHP package that calls callables / callbacks / hooks, using dependency injection to resolve their parameters.
I built this to use in my own packages, where the caller can pass callbacks and I don't know which parameters they need exactly. This package lets you specify the parameters you want to provide, and it resolves them for the caller at call-time.
It isn't a Dependency Injection Container like those used in frameworks. Each callable is dealt with individually.
Table of Contents
- Installation
- Usage
- Validation
- Exceptions
Installation
Install the package via composer:
Usage
There are three steps to using this package:
- Create a
DICaller
instance, passing a callable to it, - Register the parameters you'd like to make available to the callable,
- Execute the callable using
->call()
.
DICaller
will match the parameters you've registered to the callable's signature.
You can register parameters by type, which supports class-type and variable type (integer, string, etc.):
You can register parameters by name:
You can register parameters by position (starting from 0):
Union types are supported:
Note: Union types might not be processed in the same order as they're written in the signature, as DICaller uses Reflection which may alter the order.
Intersection types are supported:
Variadic parameters are supported, but are treated like normal parameters:
Validation
Before calling ->call()
, you can check that the callable is actually callable, and the parameters resolve using ->canCall()
:
And you can check and call it in one step using ->callIfPossible()
:
Note: This will return
null
when the call isn't possible, which isn't distinguishable from a successful call that returnsnull
.
Exceptions
If the callable isn't actually callable, a DICallerInvalidCallableException
is thrown when ->call()
is called:
If the parameters can't be resolved, a DICallerUnresolvableParametersException
is thrown when ->call()
is called:
Testing This Package
- Clone this package:
git clone https://github.com/code-distortion/di-caller.git .
- Run
composer install
to install dependencies - Run the tests:
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
SemVer
This library uses SemVer 2.0.0 versioning. This means that changes to X
indicate a breaking change: 0.0.X
, 0.X.y
, X.y.z
. When this library changes to version 1.0.0, 2.0.0 and so forth, it doesn't indicate that it's necessarily a notable release, it simply indicates that the changes were breaking.
Treeware
This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.
Contributing
Please see CONTRIBUTING for details.
Code of Conduct
Please see CODE_OF_CONDUCT for details.
Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.