1. Go to this page and download the library: Download dakujem/wire-genie library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dakujem / wire-genie example snippets
$container = new Any\Psr11\Container([
Thing::class => new Thing(),
MyService::class => new MyService(),
]);
$callable = function (MyService $service, Thing $thing){ ... };
class Something {
public function __construct(MyService $service, Thing $thing) { ... }
}
$g = new Dakujem\Wire\Genie($container);
// Magic! The dependencies are resolved from the container.
$value = $g->invoke($callable);
$object = $g->construct(Something::class);
// override type-hint(s)
$callable = function (
#[Wire(MyService::class)] AnInterface $service,
#[Wire(Thing::class)] $thing
){ ... };
$value = $g->invoke($callable);
// construct object(s) if not present in the container
$callable = function (
#[Hot] Something $some,
#[Make(Thing::class)] $thing
){ ... };
$value = $g->invoke($callable);
// provide arguments for scalar-type, no-type and otherwise unresolvable parameters
$callable = function (string $question, MyService $service, int $answer){ ... };
$g->invoke(
$callable,
'The Ultimate Question of Life, the Universe, and Everything.',
42,
);
$g->invoke(
$callable,
answer: 42,
question: 'The Ultimate Question of Life, the Universe, and Everything.',
);
// skip wiring for a parameter...
$callable = function (#[Skip] MyService $service){ ... };
$g->invoke($callable, new MyService(...)); // ...and provide your own argument(s)
/**
* Invokes a callable resolving its type-hinted arguments,
* filling in the unresolved arguments from the static argument pool.
* Returns the callable's return value.
* Also allows to create objects passing in a class name.
*/
public function call(callable|string $target, ...$pool): mixed
{
return Genie::employ($this->container)($target, ...$pool);
}
$repoGenie = new Dakujem\Wire\Genie(
new Dakujem\Wire\Limiter($container, [
RepositoryInterface::class,
// you may whitelist multiple classes or interfaces
])
);
// If we happen to find a magical lamp...
$lamp = new Dakujem\Wire\Lamp($container);
// we can rub it, and a genie might come out!
$genie = $lamp->rub();
// My wish number one is...
$genie->construct(Palace::class);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.