PageRenderTime 54ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/slow/lang/static_properties.php

http://github.com/facebook/hiphop-php
PHP | 203 lines | 156 code | 31 blank | 16 comment | 0 complexity | 31ed59143496d596597f22815747971c 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. <?hh
  2. class A {
  3. const CD = "A::CD";
  4. const CE = B::CE;
  5. const CF = C::CG;
  6. static $a = "A::a";
  7. static protected $b = "A::b";
  8. static private $c = "A::c";
  9. static $d = A::CD;
  10. static protected $e = A::CE;
  11. static private $f = A::CF;
  12. function aFunc() {
  13. print "In A::aFunc():\n";
  14. print " A::a: " . A::$a . "\n";
  15. print " A::b: " . A::$b . "\n";
  16. print " A::c: " . A::$c . "\n";
  17. print " A::d: " . A::$d . "\n";
  18. print " A::e: " . A::$e . "\n";
  19. print " A::f: " . A::$f . "\n";
  20. print "\n";
  21. print " B::a: " . B::$a . "\n";
  22. print " B::b: " . B::$b . "\n";
  23. # print " B::c: " . B::$c . "\n";
  24. print " B::d: " . B::$d . "\n";
  25. print " B::e: " . B::$e . "\n";
  26. # print " B::f: " . B::$f . "\n";
  27. print " B::g: " . B::$g . "\n";
  28. print "\n";
  29. print " C::a: " . C::$a . "\n";
  30. print " C::b: " . C::$b . "\n";
  31. # print " C::c: " . C::$c . "\n";
  32. print " C::d: " . C::$d . "\n";
  33. print " C::e: " . C::$e . "\n";
  34. # print " C::f: " . C::$f . "\n";
  35. print " C::g: " . C::$g . "\n";
  36. print " C::h: " . C::$h . "\n";
  37. }
  38. }
  39. class B extends A {
  40. const CD = "B::CD";
  41. const CE = "B::CE";
  42. static protected $b = "B::b";
  43. static private $c = "B::c";
  44. static $d = B::CD;
  45. static protected $g = "B::g";
  46. function bFunc() {
  47. print "In B::bFunc():\n";
  48. print " A::a: " . A::$a . "\n";
  49. print " A::b: " . A::$b . "\n";
  50. # print " A::c: " . A::$c . "\n";
  51. print " A::d: " . A::$d . "\n";
  52. print " A::e: " . A::$e . "\n";
  53. # print " A::f: " . A::$f . "\n";
  54. print "\n";
  55. print " B::a: " . B::$a . "\n";
  56. print " B::b: " . B::$b . "\n";
  57. print " B::c: " . B::$c . "\n";
  58. print " B::d: " . B::$d . "\n";
  59. print " B::e: " . B::$e . "\n";
  60. # print " B::f: " . B::$f . "\n";
  61. print " B::g: " . B::$g . "\n";
  62. print "\n";
  63. print " C::a: " . C::$a . "\n";
  64. print " C::b: " . C::$b . "\n";
  65. # print " C::c: " . C::$c . "\n";
  66. print " C::d: " . C::$d . "\n";
  67. print " C::e: " . C::$e . "\n";
  68. # print " C::f: " . C::$f . "\n";
  69. print " C::g: " . C::$g . "\n";
  70. print " C::h: " . C::$h . "\n";
  71. }
  72. }
  73. class C extends B {
  74. const CG = "C::CG";
  75. static protected $b = "C::b";
  76. static $h = "C::h";
  77. public $i = C::CG;
  78. function cFunc() {
  79. print "In C::cFunc():\n";
  80. print " A::a: " . A::$a . "\n";
  81. print " A::b: " . A::$b . "\n";
  82. # print " A::c: " . A::$c . "\n";
  83. print " A::d: " . A::$d . "\n";
  84. print " A::e: " . A::$e . "\n";
  85. # print " A::f: " . A::$f . "\n";
  86. print "\n";
  87. print " B::a: " . B::$a . "\n";
  88. print " B::b: " . B::$b . "\n";
  89. # print " B::c: " . B::$c . "\n";
  90. print " B::d: " . B::$d . "\n";
  91. print " B::e: " . B::$e . "\n";
  92. # print " B::f: " . B::$f . "\n";
  93. print " B::g: " . B::$g . "\n";
  94. print "\n";
  95. print " C::a: " . C::$a . "\n";
  96. print " C::b: " . C::$b . "\n";
  97. # print " C::c: " . C::$c . "\n";
  98. print " C::d: " . C::$d . "\n";
  99. print " C::e: " . C::$e . "\n";
  100. # print " C::f: " . C::$f . "\n";
  101. print " C::g: " . C::$g . "\n";
  102. print " C::h: " . C::$h . "\n";
  103. }
  104. }
  105. function main() {
  106. $a = new A;
  107. $a->aFunc();
  108. $b = new B;
  109. $b->aFunc();
  110. $b->bFunc();
  111. $c = new C;
  112. $c->aFunc();
  113. $c->bFunc();
  114. $c->cFunc();
  115. print "isset(C::\$h): ".(isset(C::$h)?"true":"false")."\n";
  116. print "isset(C::\$i): ".(isset(C::$i)?"true":"false")."\n";
  117. print "C::\$h: ".C::$h."\n";
  118. C::$h = 42;
  119. print "C::\$h: ".C::$h."\n";
  120. C::$h += 42;
  121. print "C::\$h: ".C::$h."\n";
  122. print "C::\$h: ".++C::$h."\n";
  123. print "C::\$h: ".C::$h++."\n";
  124. print "C::\$h: ".C::$h--."\n";
  125. print "C::\$h: ".--C::$h."\n";
  126. C::$h = varray[0, 1, 2];
  127. $y = C::$h[1];
  128. print "\$y: $y\n";
  129. C::$h[2] = 42;
  130. $y = C::$h[2];
  131. print "\$y: $y\n";
  132. print "Test end\n";
  133. }
  134. class D {
  135. static function main() {
  136. $a = new A;
  137. $a->aFunc();
  138. $b = new B;
  139. $b->aFunc();
  140. $b->bFunc();
  141. $c = new C;
  142. $c->aFunc();
  143. $c->bFunc();
  144. $c->cFunc();
  145. print "isset(C::\$h): ".(isset(C::$h)?"true":"false")."\n";
  146. print "isset(C::\$i): ".(isset(C::$i)?"true":"false")."\n";
  147. print "C::\$h: ".C::$h."\n";
  148. C::$h = 42;
  149. print "C::\$h: ".C::$h."\n";
  150. C::$h += 42;
  151. print "C::\$h: ".C::$h."\n";
  152. print "C::\$h: ".++C::$h."\n";
  153. print "C::\$h: ".C::$h++."\n";
  154. print "C::\$h: ".C::$h--."\n";
  155. print "C::\$h: ".--C::$h."\n";
  156. C::$h = varray[0, 1, 2];
  157. $y = C::$h[1];
  158. print "\$y: $y\n";
  159. C::$h[2] = 42;
  160. $y = C::$h[2];
  161. print "\$y: $y\n";
  162. print "Test end\n";
  163. }
  164. }
  165. // disable array -> "Array" conversion notice
  166. <<__EntryPoint>>
  167. function main_static_properties() {
  168. error_reporting(error_reporting() & ~E_NOTICE);
  169. print "Test begin\n";
  170. main();
  171. D::main();
  172. }