/** * @param callable $callable * @param string[] $paramMap * @return \Closure */ public static function fnBindFieldsToParams($callable, $paramMap) { return function ($record) use($callable, $paramMap) { $params = Sequence::make($paramMap)->map(FnGen::fnPluckFrom($record))->to_a(); return call_user_func_array($callable, $params); }; }
public function testFnPluckFrom() { $from = range(1, 10); $fn = FnGen::fnPluckFrom($from); foreach ($from as $key => $value) { $this->assertEquals($value, $fn($key)); } $from = array('apple' => 'A', 'banana' => 'B', 'orange' => 'O', 'pineapple' => 'P'); $fn = FnGen::fnPluckFrom($from); foreach ($from as $key => $value) { $this->assertEquals($value, $fn($key)); } $this->assertNull($fn('pear')); $fn = FnGen::fnPluckFrom($from, 'fruit'); $this->assertEquals('fruit', $fn('pear')); }