compact_literals.phpt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. --TEST--
  2. Test with compact literals
  3. --INI--
  4. opcache.enable=1
  5. opcache.enable_cli=1
  6. opcache.optimization_level=-1
  7. --EXTENSIONS--
  8. opcache
  9. --FILE--
  10. <?php
  11. echo "array key hash" . ":" . PHP_EOL;
  12. $array = array(
  13. "1" => "one",
  14. "2" => "two",
  15. "one" => 1,
  16. "two" => 2,
  17. );
  18. unset($array["one"]);
  19. unset($array["2"]);
  20. print_r($array);
  21. echo "function define" . ":" . PHP_EOL;
  22. if (!function_exists("dummy")) {
  23. function dummy() {
  24. var_dump(__FUNCTION__);
  25. }
  26. }
  27. dummy();
  28. $dummy = function () { var_dump("lambda" . "dummy"); };
  29. $dummy();
  30. if (!class_exists("A")) {
  31. class A {
  32. public static $name = "A";
  33. public static function say($n = "name") {
  34. var_dump(static::$name);
  35. }
  36. }
  37. }
  38. class B extends A {
  39. public static $name = "B";
  40. }
  41. if (!class_exists("C")) {
  42. class C extends B {
  43. public static $name = "C";
  44. }
  45. }
  46. A::say();
  47. B::Say();
  48. A::say();
  49. B::say();
  50. C::say();
  51. function get_eol_define() {
  52. define("MY_EOL", PHP_EOL);
  53. }
  54. get_eol_define();
  55. define("EOL", MY_EOL);
  56. echo "constants define" . ":" . EOL;
  57. echo "define " . "TEST" . EOL;
  58. define("TEST", "TEST");
  59. class E {
  60. public static $E="EP";
  61. const E="E";
  62. const TEST="NULL";
  63. }
  64. class F {
  65. const F="F";
  66. public static $E="FEP";
  67. const E="FE";
  68. const TEST="FALSE";
  69. public static $F = "FP";
  70. }
  71. var_dump(TEST); //"TEST"
  72. var_dump(E::E); //"E"
  73. var_dump(F::E); //"FE"
  74. var_dump(F::F); //"F"
  75. var_dump(E::TEST); //"NULL"
  76. var_dump(F::TEST); //"FALSE"
  77. var_dump(E::$E); //"EP"
  78. var_dumP(F::$F); //"FP"
  79. var_dumP(F::$E); //"FEP"
  80. echo "propertes and methods" . EOL;
  81. class CH {
  82. const H = "H";
  83. public function h() {
  84. var_dump(self::H);
  85. }
  86. }
  87. class CI {
  88. const H = "I";
  89. public function h() {
  90. var_dump(self::H);
  91. }
  92. }
  93. function change(&$obj) {
  94. $obj = new CH;
  95. }
  96. function geti() {
  97. return new CI;
  98. }
  99. $h = new CH;
  100. echo "-->H" . PHP_EOL;
  101. $h->H();
  102. var_dump($h::H);
  103. var_dump(CH::H);
  104. $h->H();
  105. var_dump($h::H);
  106. var_dump(CH::H);
  107. echo "-->I" . PHP_EOL;
  108. $h = new CI;
  109. $h->H();
  110. var_dump($h::H);
  111. var_dump(CI::H);
  112. $h->H();
  113. var_dump($h::H);
  114. var_dump(CI::H);
  115. echo "-->H" . PHP_EOL;
  116. change($h);
  117. $h->H();
  118. var_dump($h::H);
  119. var_dump(CH::H);
  120. $h->H();
  121. var_dump($h::H);
  122. var_dump(CH::H);
  123. echo "-->I" . PHP_EOL;
  124. $h = geti();
  125. $h->H();
  126. var_dump($h::H);
  127. var_dump(CI::H);
  128. $h->H();
  129. var_dump($h::H);
  130. var_dump(CI::H);
  131. ?>
  132. --EXPECT--
  133. array key hash:
  134. Array
  135. (
  136. [1] => one
  137. [two] => 2
  138. )
  139. function define:
  140. string(5) "dummy"
  141. string(11) "lambdadummy"
  142. string(1) "A"
  143. string(1) "B"
  144. string(1) "A"
  145. string(1) "B"
  146. string(1) "C"
  147. constants define:
  148. define TEST
  149. string(4) "TEST"
  150. string(1) "E"
  151. string(2) "FE"
  152. string(1) "F"
  153. string(4) "NULL"
  154. string(5) "FALSE"
  155. string(2) "EP"
  156. string(2) "FP"
  157. string(3) "FEP"
  158. propertes and methods
  159. -->H
  160. string(1) "H"
  161. string(1) "H"
  162. string(1) "H"
  163. string(1) "H"
  164. string(1) "H"
  165. string(1) "H"
  166. -->I
  167. string(1) "I"
  168. string(1) "I"
  169. string(1) "I"
  170. string(1) "I"
  171. string(1) "I"
  172. string(1) "I"
  173. -->H
  174. string(1) "H"
  175. string(1) "H"
  176. string(1) "H"
  177. string(1) "H"
  178. string(1) "H"
  179. string(1) "H"
  180. -->I
  181. string(1) "I"
  182. string(1) "I"
  183. string(1) "I"
  184. string(1) "I"
  185. string(1) "I"
  186. string(1) "I"