/** * */ public function testInvoker() { $injector = new Injector(); $injector->provide('%VALUE%', ValueProvider::init(5)); $obj = $injector->{InvokableObject::class}; $invoker = new Invoker($injector); $res = $invoker->invoke($obj, 'execute'); $this->assertEquals($res, 30); }
<?php namespace Brunt; use Brunt\Provider\Classes\ClassProvider; use BruntTest\Testobjects\Car; use BruntTest\Testobjects\Controller; use BruntTest\Testobjects\ControllerA; use BruntTest\Testobjects\Engine; use BruntTest\Testobjects\FastCar; use BruntTest\Testobjects\HeavyEngine; include_once 'fileloader.php'; $inj = new Injector(); $inj->provide(Car::class, ClassProvider::init(FastCar::class)); $inj->provide(Engine::class, ClassProvider::init(HeavyEngine::class)); $inj->provide(Controller::class, ClassProvider::init(ControllerA::class)); $inj->provide('%BASE_URL%', function () { return 'http://sysvyz.org/'; }); var_dump($inj->get(Car::class)); var_dump($inj->get(Controller::class));
private function buildLazy($count) { $t = microtime(true); $injector = new Injector(); $injector->provide(ControllerA::class, ClassProvider::init(ControllerA::class)->lazy()); $injector->provide('%BASE_URL%', ValueProvider::init('%BASE_URL%')); $arr = []; for ($i = 0; $i < $count; $i++) { $arr[] = $injector->get(ControllerA::class); } return microtime(true) - $t; }