true, 'bar'=>'hello' ]); $this->assertEquals(true, $context->foo); $this->assertEquals('hello', $context->bar); } public function testMakingParameters() { $func1 = function () {}; $func2 = function (Context $context) {}; $func3 = function ($a, ?int $b, ?string $c, $d) {}; $context = new Context("", [ 'a'=>true, 'b'=>42, 'c'=>'hello' ]); $expect1 = []; $expect2 = [$context]; $expect3 = [true,42,'hello',null]; $args1 = $context->toMethodParameters($func1); $this->assertEquals($expect1, $args1); $args2 = $context->toMethodParameters($func2); $this->assertEquals($expect2, $args2); $args3 = $context->toMethodParameters($func3); $this->assertEquals($expect3, $args3); } }