Skip to content

Commit 230b2d3

Browse files
committed
parameter skipping patch - phase 1
1 parent cb6fb59 commit 230b2d3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1681
-1295
lines changed

Zend/tests/default_params01.phpt

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
--TEST--
2+
Default parameters - 1
3+
--FILE--
4+
<?php
5+
function test($a=1, $b=2, $c=3) {
6+
var_dump($a, $b, $c);
7+
var_dump(func_get_args());
8+
}
9+
echo "7\n";
10+
test(7);
11+
echo "default,4,5\n";
12+
test(default,4,5);
13+
echo "default,default,8\n";
14+
test(default,default,8);
15+
echo "3,default,5\n";
16+
test(3,default,5);
17+
echo "3,default,7,default,6\n";
18+
test(3,default,7,default,6);
19+
?>
20+
--EXPECTF--
21+
7
22+
int(7)
23+
int(2)
24+
int(3)
25+
array(1) {
26+
[0]=>
27+
int(7)
28+
}
29+
default,4,5
30+
int(1)
31+
int(4)
32+
int(5)
33+
array(3) {
34+
[0]=>
35+
int(1)
36+
[1]=>
37+
int(4)
38+
[2]=>
39+
int(5)
40+
}
41+
default,default,8
42+
int(1)
43+
int(2)
44+
int(8)
45+
array(3) {
46+
[0]=>
47+
int(1)
48+
[1]=>
49+
int(2)
50+
[2]=>
51+
int(8)
52+
}
53+
3,default,5
54+
int(3)
55+
int(2)
56+
int(5)
57+
array(3) {
58+
[0]=>
59+
int(3)
60+
[1]=>
61+
int(2)
62+
[2]=>
63+
int(5)
64+
}
65+
3,default,7,default,6
66+
67+
Fatal error: Defaults can be used only for declared optional parameters in %s line %d

Zend/tests/default_params02.phpt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
--TEST--
2+
Default parameters - 2
3+
--FILE--
4+
<?php
5+
function foo($a, $b=1, $c=2, $d = 3) {
6+
var_dump($a, $b, $c, $d);
7+
var_dump(func_num_args());
8+
var_dump(func_get_args());
9+
}
10+
11+
foo(1,2,3);
12+
foo(1,default,3);
13+
foo(default,2,3);
14+
?>
15+
--EXPECTF--
16+
int(1)
17+
int(2)
18+
int(3)
19+
int(3)
20+
int(3)
21+
array(3) {
22+
[0]=>
23+
int(1)
24+
[1]=>
25+
int(2)
26+
[2]=>
27+
int(3)
28+
}
29+
int(1)
30+
int(1)
31+
int(3)
32+
int(3)
33+
int(3)
34+
array(3) {
35+
[0]=>
36+
int(1)
37+
[1]=>
38+
int(1)
39+
[2]=>
40+
int(3)
41+
}
42+
43+
Fatal error: Defaults can be used only for declared optional parameters in %s line %d

Zend/tests/default_params03.phpt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--TEST--
2+
Default parameters - 3
3+
--FILE--
4+
<?php
5+
function test($a=1, $b=2, $c=3) {
6+
var_dump(func_get_args());
7+
var_dump(func_get_arg(1));
8+
}
9+
10+
test(7,default);
11+
echo "Done\n";
12+
?>
13+
--EXPECTF--
14+
array(2) {
15+
[0]=>
16+
int(7)
17+
[1]=>
18+
int(2)
19+
}
20+
int(2)
21+
Done

Zend/tests/default_params04.phpt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
--TEST--
2+
Default parameters - 4, call_user_func
3+
--FILE--
4+
<?php
5+
function foo($a, $b=1, $c=2, $d = 3) {
6+
var_dump($a, $b, $c, $d);
7+
var_dump(func_num_args());
8+
var_dump(func_get_args());
9+
echo "==\n";
10+
}
11+
12+
call_user_func('foo', 1,default,5,6);
13+
call_user_func('foo', 0,default,7,default);
14+
//call_user_func_array('foo', array(42, 2=>43, 4=>44));
15+
echo "Done\n";
16+
?>
17+
--EXPECTF--
18+
int(1)
19+
int(1)
20+
int(5)
21+
int(6)
22+
int(4)
23+
array(4) {
24+
[0]=>
25+
int(1)
26+
[1]=>
27+
int(1)
28+
[2]=>
29+
int(5)
30+
[3]=>
31+
int(6)
32+
}
33+
==
34+
int(0)
35+
int(1)
36+
int(7)
37+
int(3)
38+
int(4)
39+
array(4) {
40+
[0]=>
41+
int(0)
42+
[1]=>
43+
int(1)
44+
[2]=>
45+
int(7)
46+
[3]=>
47+
int(3)
48+
}
49+
==
50+
Done

Zend/tests/default_params05.phpt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
Default parameters - 5
3+
--FILE--
4+
<?php
5+
function test($a=1, $b=2, $c=3) {
6+
debug_print_backtrace();
7+
}
8+
9+
test(7);
10+
test(default,4,5);
11+
test(default,default,8);
12+
test(3,default,5);
13+
echo "Done\n";
14+
?>
15+
--EXPECTF--
16+
#0 test(7) called at [%s:%d]
17+
#0 test(1, 4, 5) called at [%s.php:%d]
18+
#0 test(1, 2, 8) called at [%s:%d]
19+
#0 test(3, 2, 5) called at [%s:%d]
20+
Done

Zend/tests/default_params06.phpt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
Default parameters - 6, by-refs
3+
--FILE--
4+
<?php
5+
function test($a=1, &$b=2) {
6+
var_dump($a, $b);
7+
$b = 10;
8+
}
9+
10+
test(7);
11+
test(7, default);
12+
echo "Done\n";
13+
?>
14+
--EXPECTF--
15+
int(7)
16+
int(2)
17+
int(7)
18+
int(2)
19+
Done

Zend/tests/default_params07.phpt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
Default parameters - 7, by-refs
3+
--FILE--
4+
<?php
5+
if(time()) {
6+
// make the function unknown at compile-time
7+
function test($a=1, &$b=2) {
8+
var_dump($a, $b);
9+
$b = 10;
10+
}
11+
}
12+
test(7);
13+
test(7, default);
14+
echo "Done\n";
15+
?>
16+
--EXPECTF--
17+
int(7)
18+
int(2)
19+
int(7)
20+
int(2)
21+
Done
22+

Zend/tests/default_params08.phpt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Default parameters - 8, by-refs
3+
--FILE--
4+
<?php
5+
6+
var_dump(is_callable("is_callable", default, default));
7+
$test = "";
8+
var_dump(is_callable("is_not_callable", default, $test));
9+
var_dump($test);
10+
echo "Done\n";
11+
?>
12+
--EXPECTF--
13+
bool(true)
14+
bool(false)
15+
string(15) "is_not_callable"
16+
Done

Zend/tests/default_params09.phpt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
--TEST--
2+
Default parameters - 9, internal funcs
3+
--FILE--
4+
<?php
5+
var_dump(array_chunk([1,2,3,4], 2));
6+
var_dump(array_chunk([1,2,3,4], 2, default));
7+
echo "Done\n";
8+
?>
9+
--EXPECTF--
10+
array(2) {
11+
[0]=>
12+
array(2) {
13+
[0]=>
14+
int(1)
15+
[1]=>
16+
int(2)
17+
}
18+
[1]=>
19+
array(2) {
20+
[0]=>
21+
int(3)
22+
[1]=>
23+
int(4)
24+
}
25+
}
26+
array(2) {
27+
[0]=>
28+
array(2) {
29+
[0]=>
30+
int(1)
31+
[1]=>
32+
int(2)
33+
}
34+
[1]=>
35+
array(2) {
36+
[0]=>
37+
int(3)
38+
[1]=>
39+
int(4)
40+
}
41+
}
42+
Done

Zend/tests/default_params10.phpt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--TEST--
2+
Default parameters - 10, shutdown func
3+
--FILE--
4+
<?php
5+
function test($a=1, $b=2, $c=3) {
6+
var_dump($a, $b, $c);
7+
var_dump(func_get_args());
8+
}
9+
register_shutdown_function("test", 3, default, 1);
10+
echo "Done\n";
11+
?>
12+
--EXPECTF--
13+
Done
14+
int(3)
15+
int(2)
16+
int(1)
17+
array(3) {
18+
[0]=>
19+
int(3)
20+
[1]=>
21+
int(2)
22+
[2]=>
23+
int(1)
24+
}

Zend/tests/default_params11.phpt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--TEST--
2+
Default parameters - 11, call_user_func
3+
--FILE--
4+
<?php
5+
function foo($a, $b=1, &$c=2, $d = 3) {
6+
$c++;
7+
var_dump($a, $b, $c, $d);
8+
var_dump(func_num_args());
9+
var_dump(func_get_args());
10+
echo "==\n";
11+
}
12+
13+
call_user_func('foo', 5, 6, default, 8);
14+
echo "Done\n";
15+
?>
16+
--EXPECTF--
17+
int(5)
18+
int(6)
19+
int(3)
20+
int(8)
21+
int(4)
22+
array(4) {
23+
[0]=>
24+
int(5)
25+
[1]=>
26+
int(6)
27+
[2]=>
28+
int(3)
29+
[3]=>
30+
int(8)
31+
}
32+
==
33+
Done

Zend/tests/default_params12.phpt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Default parameters - 12, call_user_func
3+
--FILE--
4+
<?php
5+
function foo($a, $b=1, $c=2, $d = 3) {
6+
var_dump($a, $b, $c, $d);
7+
var_dump(func_num_args());
8+
var_dump(func_get_args());
9+
echo "==\n";
10+
}
11+
12+
call_user_func('foo', default, default,5,6);
13+
echo "Done\n";
14+
?>
15+
--EXPECTF--
16+
Fatal error: Defaults can be used only for declared optional parameters in %s line %d

0 commit comments

Comments
 (0)