Annotation of embedaddon/php/tests/lang/engine_assignExecutionOrder_001.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Evaluation order during assignments.
                      3: --FILE--
                      4: <?php
                      5: 
                      6: function f() {
                      7:        echo "in f()\n";
                      8:        return "name";
                      9: }
                     10: 
                     11: function g() {
                     12:        echo "in g()\n";
                     13:        return "assigned value";
                     14: }
                     15: 
                     16: 
                     17: echo "\n\nOrder with local assignment:\n"; 
                     18: ${f()} = g();
                     19: var_dump($name);
                     20: 
                     21: echo "\n\nOrder with array assignment:\n";
                     22: $a[f()] = g();
                     23: var_dump($a);
                     24: 
                     25: echo "\n\nOrder with object property assignment:\n";
                     26: $oa = new stdClass;
                     27: $oa->${f()} = g();
                     28: var_dump($oa);
                     29: 
                     30: echo "\n\nOrder with nested object property assignment:\n";
                     31: $ob = new stdClass;
                     32: $ob->o1 = new stdClass;
                     33: $ob->o1->o2 = new stdClass;
                     34: $ob->o1->o2->${f()} = g();
                     35: var_dump($ob);
                     36: 
                     37: echo "\n\nOrder with dim_list property assignment:\n";
                     38: $oc = new stdClass;
                     39: $oc->a[${f()}] = g();
                     40: var_dump($oc);
                     41: 
                     42: 
                     43: class C {
                     44:        public static $name = "original";
                     45:        public static $a = array(); 
                     46:        public static $string = "hello";
                     47: }
                     48: echo "\n\nOrder with static property assignment:\n";
                     49: C::${f()} = g();
                     50: var_dump(C::$name);
                     51: 
                     52: echo "\n\nOrder with static array property assignment:\n";
                     53: C::$a[f()] = g();
                     54: var_dump(C::$a);
                     55: 
                     56: echo "\n\nOrder with indexed string assignment:\n";
                     57: $string = "hello";
                     58: function getOffset() { 
                     59:        echo "in getOffset()\n";
                     60:        return 0;
                     61: }
                     62: function newChar() {
                     63:        echo "in newChar()\n";
                     64:        return 'j';
                     65: }
                     66: $string[getOffset()] = newChar();
                     67: var_dump($string);
                     68: 
                     69: echo "\n\nOrder with static string property assignment:\n";
                     70: C::$string[getOffset()] = newChar();
                     71: var_dump(C::$string);
                     72: 
                     73: ?>
                     74: --EXPECTF--
                     75: 
                     76: 
                     77: Order with local assignment:
                     78: in f()
                     79: in g()
                     80: %string|unicode%(14) "assigned value"
                     81: 
                     82: 
                     83: Order with array assignment:
                     84: in f()
                     85: in g()
                     86: array(1) {
                     87:   [%u|b%"name"]=>
                     88:   %string|unicode%(14) "assigned value"
                     89: }
                     90: 
                     91: 
                     92: Order with object property assignment:
                     93: in f()
                     94: in g()
                     95: object(stdClass)#%d (1) {
                     96:   [%u|b%"assigned value"]=>
                     97:   %string|unicode%(14) "assigned value"
                     98: }
                     99: 
                    100: 
                    101: Order with nested object property assignment:
                    102: in f()
                    103: in g()
                    104: object(stdClass)#%d (1) {
                    105:   [%u|b%"o1"]=>
                    106:   object(stdClass)#%d (1) {
                    107:     [%u|b%"o2"]=>
                    108:     object(stdClass)#%d (1) {
                    109:       [%u|b%"assigned value"]=>
                    110:       %string|unicode%(14) "assigned value"
                    111:     }
                    112:   }
                    113: }
                    114: 
                    115: 
                    116: Order with dim_list property assignment:
                    117: in f()
                    118: in g()
                    119: object(stdClass)#%d (1) {
                    120:   [%u|b%"a"]=>
                    121:   array(1) {
                    122:     [%u|b%"assigned value"]=>
                    123:     %string|unicode%(14) "assigned value"
                    124:   }
                    125: }
                    126: 
                    127: 
                    128: Order with static property assignment:
                    129: in f()
                    130: in g()
                    131: %string|unicode%(14) "assigned value"
                    132: 
                    133: 
                    134: Order with static array property assignment:
                    135: in f()
                    136: in g()
                    137: array(1) {
                    138:   [%u|b%"name"]=>
                    139:   %string|unicode%(14) "assigned value"
                    140: }
                    141: 
                    142: 
                    143: Order with indexed string assignment:
                    144: in getOffset()
                    145: in newChar()
                    146: %string|unicode%(5) "jello"
                    147: 
                    148: 
                    149: Order with static string property assignment:
                    150: in getOffset()
                    151: in newChar()
                    152: %string|unicode%(5) "jello"

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