2 // Copyright 2004-present Facebook. All Rights Reserved.
4 function make_wrapper($action, $layers=3) {
6 $c = make_wrapper($action, $layers-1);
7 return ['call_user_func_array', ['array_map'], [[$c[0], $c[1], $c[2]]]];
9 return ['call_user_func_array', ['assert'], [["($action) || true"]]];
13 function change_local($x = 123) {
15 $wrapper = make_wrapper('$var = 1234');
16 array_map($wrapper[0], $wrapper[1], $wrapper[2]);
17 var_dump($var +
$var);
20 function add_local() {
21 $wrapper = make_wrapper('$var = "abcd"');
22 array_map($wrapper[0], $wrapper[1], $wrapper[2]);
23 var_dump(get_defined_vars()['var']);
30 $wrapper = make_wrapper('var_dump(get_defined_vars()["var2"])');
31 array_map($wrapper[0], $wrapper[1], $wrapper[2]);
34 function compact_extract() {
35 $wrapper = make_wrapper('extract(["var1" => 123, "var2" => 456, "var3" => 789])');
36 array_map($wrapper[0], $wrapper[1], $wrapper[2]);
37 $wrapper = make_wrapper('var_dump(compact("var1", "var2", "var3"))');
38 array_map($wrapper[0], $wrapper[1], $wrapper[2]);
41 function change_local_method($x = 123) {
43 $v = Vector
{'($var = 1234) || true'};
45 var_dump($var +
$var);
48 function all_vars_method() {
52 $v = Vector
{'(var_dump(get_defined_vars()["var2"])) || true'};
56 function get_arg_impl($arg1, $arg2, $arg3) {
57 var_dump(array_map('func_get_arg', [0]));
59 function get_arg() { get_arg_impl(1, 2, 3); }
69 run('compact_extract');
71 run('change_local_method');
72 run('all_vars_method');