3 function test_cufa($args) :mixed{
4 echo "\n", '********* ', __FUNCTION__
, ' **********', "\n";
7 echo "\n", '========= functions ==========', "\n";
8 call_user_func_array(variadic_only_no_vv
<>, $args);
9 call_user_func_array(variadic_only
<>, $args);
10 try { call_user_func_array(variadic_some
<>, $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
11 call_user_func_array(variadic_hack_only
<>, $args);
12 try { call_user_func_array(variadic_hack_some
<>, $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
13 echo "\n", '========= static methods ==========', "\n";
14 call_user_func_array(vec
['C', 'st_variadic_only'], $args);
15 try { call_user_func_array(vec
['C', 'st_variadic_some'], $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
16 call_user_func_array(vec
['C', 'st_variadic_hack_only'], $args);
17 try { call_user_func_array(vec
['C', 'st_variadic_hack_some'], $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
18 echo "\n", '========= instance methods ==========', "\n";
20 call_user_func_array(vec
[$inst, 'variadic_only'], $args);
21 try { call_user_func_array(vec
[$inst, 'variadic_some'], $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
22 call_user_func_array(vec
[$inst, 'variadic_hack_only'], $args);
23 try { call_user_func_array(vec
[$inst, 'variadic_hack_some'], $args); } catch (Exception
$e) { var_dump($e->getMessage()); }
26 function test_cuf() :mixed{
27 echo "\n", '********* ', __FUNCTION__
, ' **********', "\n";
28 call_user_func(variadic_only_no_vv
<>, 'a', 'b', 'c');
29 call_user_func(variadic_only
<>, 'a', 'b', 'c');
30 call_user_func(variadic_some
<>, 'a', 'b', 'c');
31 call_user_func(variadic_hack_only
<>, 'a', 'b', 'c');
32 call_user_func(variadic_hack_some
<>, 'a', 'b', 'c');
33 echo "\n", '========= static methods ==========', "\n";
34 call_user_func(vec
['C', 'st_variadic_only'], 'a', 'b', 'c');
35 call_user_func(vec
['C', 'st_variadic_some'], 'a', 'b', 'c');
36 call_user_func(vec
['C', 'st_variadic_hack_only'], 'a', 'b', 'c');
37 call_user_func(vec
['C', 'st_variadic_hack_some'], 'a', 'b', 'c');
38 echo "\n", '========= instance methods ==========', "\n";
40 call_user_func(vec
[$inst, 'variadic_only'], 'a', 'b', 'c');
41 call_user_func(vec
[$inst, 'variadic_some'], 'a', 'b', 'c');
42 call_user_func(vec
[$inst, 'variadic_hack_only'], 'a', 'b', 'c');
43 call_user_func(vec
[$inst, 'variadic_hack_some'], 'a', 'b', 'c');
46 function test_cuf_insuffient_calls() :mixed{
47 echo "\n", '********* ', __FUNCTION__
, ' **********', "\n";
48 call_user_func(variadic_only_no_vv
<>);
49 call_user_func(variadic_only
<>);
50 try { call_user_func(variadic_some
<>); } catch (Exception
$e) { var_dump($e->getMessage()); }
51 call_user_func(variadic_hack_only
<>);
52 try { call_user_func(variadic_hack_some
<>); } catch (Exception
$e) { var_dump($e->getMessage()); }
53 echo "\n", '========= static methods ==========', "\n";
54 call_user_func(vec
['C', 'st_variadic_only']);
55 try { call_user_func(vec
['C', 'st_variadic_some']); } catch (Exception
$e) { var_dump($e->getMessage()); }
56 call_user_func(vec
['C', 'st_variadic_hack_only']);
57 try { call_user_func(vec
['C', 'st_variadic_hack_some']); } catch (Exception
$e) { var_dump($e->getMessage()); }
58 echo "\n", '========= instance methods ==========', "\n";
60 call_user_func(vec
[$inst, 'variadic_only']);
61 try { call_user_func(vec
[$inst, 'variadic_some']); } catch (Exception
$e) { var_dump($e->getMessage()); }
62 call_user_func(vec
[$inst, 'variadic_hack_only']);
63 try { call_user_func(vec
[$inst, 'variadic_hack_some']); } catch (Exception
$e) { var_dump($e->getMessage()); }
66 function test_stack_should_not_overflow(...$args) :mixed{
67 echo "\n", '********* ', __FUNCTION__
, ' **********', "\n";
68 var_dump(is_array($args));
69 var_dump(count($args));
72 function main() :mixed{
74 test_cuf_insuffient_calls();
76 test_cufa(vec
['a', 'b', 'c']);
80 call_user_func_array(test_stack_should_not_overflow
<>, range(0, 10000));
81 call_user_func_array(test_stack_should_not_overflow
<>, range(0, 30000));
86 function main_cufa() :mixed{
88 require_once __DIR__
.'/variadic_funcs.inc';