PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/spec/tests/expressions/primary_expressions/intrinsics_unset.php

http://github.com/facebook/hiphop-php
PHP | 199 lines | 144 code | 49 blank | 6 comment | 0 complexity | 7cc7e24dbb36375398b00cd4cf4e362c MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?php
  2. /*
  3. +-------------------------------------------------------------+
  4. | Copyright (c) 2015 Facebook, Inc. (http://www.facebook.com) |
  5. +-------------------------------------------------------------+
  6. */
  7. error_reporting(-1);
  8. echo "--------- TRUE -------------\n";
  9. $v = TRUE;
  10. var_dump(isset($v));
  11. unset($v);
  12. var_dump(isset($v));
  13. echo "--------- NULL -------------\n";
  14. $v = NULL;
  15. var_dump(isset($v));
  16. unset($v);
  17. var_dump(isset($v));
  18. echo "--------- TRUE, 12.3, NULL -------------\n";
  19. $v1 = TRUE; $v2 = 12.3; $v3 = "abc";
  20. var_dump(isset($v1, $v2, $v3));
  21. unset($v1, $v2, $v3);
  22. var_dump(isset($v1, $v2, $v3));
  23. echo "--------- undefined parameter -------------\n";
  24. function f($p)
  25. {
  26. var_dump($p);
  27. var_dump(isset($p));
  28. unset($p);
  29. var_dump(isset($p));
  30. }
  31. f();
  32. f(NULL);
  33. f(10);
  34. echo "---------- dynamic property ------------\n";
  35. class X1
  36. {
  37. }
  38. class X2
  39. {
  40. public function __isset($name)
  41. {
  42. echo "Inside " . __METHOD__ . " with \$name $name\n";
  43. }
  44. public function __unset($name)
  45. {
  46. echo "Inside " . __METHOD__ . " with \$name $name\n";
  47. }
  48. }
  49. $x1 = new X1;
  50. var_dump(isset($x1->m));
  51. $x1->m = 123;
  52. var_dump(isset($x1->m));
  53. unset($x1->m);
  54. var_dump(isset($x1->m));
  55. $x2 = new X2;
  56. var_dump(isset($x2->m));
  57. unset($x2->m);
  58. var_dump(isset($x2->m));
  59. echo "---------- unsetting inside a function (global) ------------\n";
  60. $gl = 100;
  61. function g1()
  62. {
  63. global $gl;
  64. var_dump(isset($gl));
  65. unset($gl); // unsets local "version" in current scope
  66. var_dump(isset($gl));
  67. }
  68. g1();
  69. var_dump(isset($gl)); // still set
  70. echo "---------- unsetting inside a function (\$GLOBALS) ------------\n";
  71. function g2()
  72. {
  73. var_dump(isset($GLOBALS['gl']));
  74. unset($GLOBALS['gl']); // unsets global "version"
  75. var_dump(isset($GLOBALS['gl']));
  76. }
  77. g2();
  78. var_dump(isset($gl)); // no longer set
  79. echo "---------- unsetting inside a function (pass-by-ref) ------------\n";
  80. function g3($p1, &$p2)
  81. {
  82. var_dump(isset($p1, $p2));
  83. unset($p1, $p2); // unsets local "version" in current scope
  84. var_dump(isset($p1, $p2));
  85. }
  86. $v1 = 10;
  87. $v2 = 20;
  88. g3($v1, $v2);
  89. var_dump(isset($v1)); // still set
  90. var_dump($v1);
  91. var_dump(isset($v2)); // still set, even though passed in by reference and unset
  92. var_dump($v2);
  93. echo "---------- unsetting inside a function (static) ------------\n";
  94. function g4()
  95. {
  96. static $count = 0;
  97. ++$count;
  98. echo "count = $count\n";
  99. var_dump(isset($count));
  100. unset($count); // unsets local "version" in current scope
  101. var_dump(isset($count));
  102. }
  103. g4();
  104. g4();
  105. echo "---------- unsetting a property ------------\n";
  106. class C
  107. {
  108. const CON1 = 123;
  109. public $prop = 10;
  110. public static $sprop = -5;
  111. }
  112. $c1 = new C;
  113. var_dump($c1);
  114. var_dump(isset($c1->prop));
  115. unset($c1->prop); // remove it from this instance
  116. var_dump(isset($c1->prop));
  117. //unset(C::$sprop); // Attempt to unset static property
  118. var_dump($c1);
  119. echo "-----------\n";
  120. $c2 = new C;
  121. var_dump($c2);
  122. var_dump(isset($c2->prop));
  123. echo "---------- unsetting \$this ------------\n";
  124. class D
  125. {
  126. public function f()
  127. {
  128. echo "Inside ". __METHOD__ . "\n";
  129. var_dump(isset($this));
  130. unset($this);
  131. var_dump(isset($this));
  132. $this->g(); // use $this to call sibling instance method
  133. }
  134. private function g()
  135. {
  136. echo "Inside ". __METHOD__ . "\n";
  137. var_dump(isset($this));
  138. }
  139. }
  140. $d = new D;
  141. $d->f();
  142. echo "---------- unsetting array elements ------------\n";
  143. $a = array(10, 20, "xx" => 30);
  144. print_r($a);
  145. unset($a[1]);
  146. print_r($a);
  147. unset($a[10]);
  148. print_r($a);
  149. unset($a["Xx"]);
  150. print_r($a);