Annotation of embedaddon/php/ext/standard/tests/general_functions/call_user_func_array_variation_001.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: call_user_func_array() passes by reference if the array element is referenced, regardless of function signature.
                      3: --FILE--
                      4: <?php
                      5: 
                      6: function by_val($arg) {
                      7:        $arg = 'changed';
                      8: }
                      9: 
                     10: function by_ref(&$arg) {
                     11:        $arg = 'changed';
                     12: }
                     13: 
                     14: echo "------ Calling by_val() with unreferenced argument ------\n";
                     15: $arg = array('original');
                     16: call_user_func_array('by_val', $arg);
                     17: var_dump($arg);
                     18: 
                     19: echo "------ Calling by_ref() with unreferenced argument ------\n";
                     20: $arg = array('original');
                     21: call_user_func_array('by_ref', $arg);
                     22: var_dump($arg);
                     23: 
                     24: echo "------ Calling by_val() with referenced argument ------\n";
                     25: $arg = array('original');
                     26: $ref = &$arg[0];
                     27: call_user_func_array('by_val', $arg);
                     28: var_dump($arg);
                     29: 
                     30: echo "------ Calling by_ref() with referenced argument ------\n";
                     31: $arg = array('original');
                     32: $ref = &$arg[0];
                     33: call_user_func_array('by_ref', $arg);
                     34: var_dump($arg);
                     35: 
                     36: ?>
                     37: --EXPECTF--
                     38: ------ Calling by_val() with unreferenced argument ------
                     39: array(1) {
                     40:   [0]=>
                     41:   string(8) "original"
                     42: }
                     43: ------ Calling by_ref() with unreferenced argument ------
                     44: 
                     45: Warning: Parameter 1 to by_ref() expected to be a reference, value given in %s on line %d
                     46: array(1) {
                     47:   [0]=>
                     48:   string(8) "original"
                     49: }
                     50: ------ Calling by_val() with referenced argument ------
                     51: array(1) {
                     52:   [0]=>
1.1.1.2 ! misho      53:   &string(8) "original"
1.1       misho      54: }
                     55: ------ Calling by_ref() with referenced argument ------
                     56: array(1) {
                     57:   [0]=>
                     58:   &string(7) "changed"
                     59: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>