/** * Invoke method * * @param array $params * @param Filter $filter * * @return mixed * @throws \Koda\Error\TypeCastingException */ public function invoke(array $params, Filter $filter = null) { if (!$filter) { $filter = \Koda::getFilter($this->name); } $args = $this->filterArgs($params, $filter); return call_user_func_array([$filter->context ?: $this->class, $this->method], $args); }
/** * @group dev */ public function testObject() { $object = \Koda::object(Samples::class, ["index" => 16]); $this->assertEquals(new Samples(), $object); $object = \Koda::object(SampleObject::class, ["index" => 16, "factory" => 64, "inject" => 3], ["injector" => function (ArgumentInfo $info, $value) { return $value . "2"; }, "factory" => function (ArgumentInfo $info, $value) { return new \ArrayObject(["param" => $value]); }]); $this->assertEquals(new SampleObject(16, 32, new \ArrayObject(["param" => 64])), $object); }
<?php require_once __DIR__ . '/../vendor/autoload.php'; $toxen = new \Koda(__DIR__); $toxen->dispatch();
<?php require_once __DIR__ . '/../vendor/autoload.php'; class Example { public function __construct() { } /** * Calculate of hypotenuse * @param float $leg1 (unsigned) * @param float $leg2 (unsigned) * @param int $round (value 1..6) * @return float */ public function hypotenuseCalc($leg1, $leg2, $round = 2) { var_dump("=======", $leg1, $leg2, $round); return round(sqrt($leg1 * $leg1 + $leg2 * $leg2), $round); } public function test() { } } $class = new Koda\ClassInfo('Example', Koda\ClassInfo::FLAG_OBJECT, "*Calc"); var_dump(json_encode($class, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); //var_dump(Koda::call([new Example(), 'hypotenuseCalc'], ['leg2' => 3, 'leg1' => 4])); var_dump(Koda::object(Example::class));
/** * @dataProvider rangesProvider * @param $values * @param $success */ public function testRanges($values, $success) { if ($success) { $this->assertTrue(\Koda::call([Samples::class, "ranges"], $values)); } else { try { \Koda::call([Samples::class, "ranges"], $values); $this->fail("Should fail"); } catch (InvalidArgumentException $e) { } } }