1--TEST-- 2Dynamic Constant Expressions 3--FILE-- 4<?php 5 6const C_0 = 0; 7const C_1 = 1; 8const C_foo = "0foo"; 9const C_arr = [0 => 0, "foo" => "foo"]; 10 11const T_1 = C_1 | 2; 12const T_2 = C_1 . "foo"; 13const T_3 = C_1 > 1; 14const T_4 = C_1 >= 1; 15const T_5 = -C_1; 16const T_6 = +C_1; 17const T_7 = +C_foo; 18const T_8 = !C_1; 19const T_9 = C_0 || 0; 20const T_10 = C_1 || 0; 21const T_11 = C_0 && 1; 22const T_12 = C_1 && 1; 23const T_13 = C_0 ? "foo" : "bar"; 24const T_14 = C_1 ? "foo" : "bar"; 25const T_15 = C_0 ?: "bar"; 26const T_16 = C_1 ?: "bar"; 27const T_17 = C_arr[0]; 28const T_18 = C_arr["foo"]; 29const T_19 = [ 30 C_0, 31 "foo" => "foo", 32 42 => 42, 33 3.14 => 3.14, 34 null => null, 35 false => false, 36 true => true, 37]; 38eval("const T_20x = 'a';"); 39const T_20 = null ?: (T_20x . 'bc'); 40 41var_dump( 42 T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9, T_10, 43 T_11, T_12, T_13, T_14, T_15, T_16, T_17, T_18, T_19, T_20 44); 45 46?> 47--EXPECTF-- 48Warning: A non-numeric value encountered in %s on line %d 49int(3) 50string(4) "1foo" 51bool(false) 52bool(true) 53int(-1) 54int(1) 55int(0) 56bool(false) 57bool(false) 58bool(true) 59bool(false) 60bool(true) 61string(3) "bar" 62string(3) "foo" 63string(3) "bar" 64int(1) 65int(0) 66string(3) "foo" 67array(6) { 68 [0]=> 69 bool(false) 70 ["foo"]=> 71 string(3) "foo" 72 [42]=> 73 int(42) 74 [3]=> 75 float(3.14) 76 [""]=> 77 NULL 78 [1]=> 79 bool(true) 80} 81string(3) "abc" 82