PHP: $result = $this->db->table($nameTable) ->where(function () use($tableCheckParameters){ $whereArray = []; foreach($tableCheckParameters as $key => $value) { $arr[] = $key.'='.'"'.$_POST[$value].'"'; } echo '<pre>'; print_r($whereArray); echo '</pre>'; return $whereArray; }) ->get(); Попытался сделать так, но почему то не отрабатывает он так.... По логике вещей функция должна вернуть массив, который передастся в аргумент метода... Но почему то не хочет так делать...
Можно так: PHP: $test = function() { return 'привет'; }; function view($test) { echo $test(); } view($test);
@askanim так что возвращает магическая функция? Какой код в функции where? PHP: <?php class test { public $result = array(); function anon($f) { if (is_callable($f)) { $this->result = $f(); } return $this; } function get_result() { return $this->result; } } $arr = ['one', 'two']; var_export((new test)->anon(function() use ($arr) { return $arr; })->get_result());
Нет, по логике вещей ты просто передал в метод where callable-ссылку на анонимную функцию, и больше ничего А вызывать её должна уже where. В PHP по-моему, нельзя как в javascript в рамках одной операции определить и вызвать анонимную функцию
PHP: class Foo { public function run($arguments) { var_dump($arguments); } } $foo = new Foo; $data = [0, 1, 2, 3, 4]; $foo->run( (function() use ($data) { $response = array_map(function($item) { return ++$item; }, $data); return $response; })() ); Так? --- Добавлено --- хех... это работает только в PHP7 )
А нахрена оно в таком контексте нужно? Нагляднее сделать так, и строчек меньше: PHP: class Foo { public function run($arguments) { var_dump($arguments); } } $foo = new Foo; $data = [0, 1, 2, 3, 4]; $data = array_map(function($item) { return ++$item; }, $data); $foo->run($data); Другое дело, когда так: PHP: function f() { $data = [0, 1, 2, 3, 4]; $a = 5; $data = array_map(function($item) use ($a) { return $a + $item; }, $data); return $data; } В этом и есть смысл замыкания, что функция, вызываемая из array_map имеет доступ к локальной переменной другой функции
я на работе пишу не на семёрке. У меня тут 5,6. Просто поставил её, но в принципе там всё войдёт и на семёрку, так как не пишу вообще старые вариации.