parameters_002.phpt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. --TEST--
  2. ReflectionParameter::getClass(), getDeclaringClass(), getDeclaringFunction()
  3. --FILE--
  4. <?php
  5. function test($nix, Array $ar, &$ref, stdClass $std,
  6. NonExistingClass $na, stdClass &$opt = NULL, $def = "FooBar")
  7. {
  8. }
  9. class test
  10. {
  11. function method($nix, Array $ar, &$ref, stdClass $std,
  12. NonExistingClass $na, stdClass $opt = NULL, $def = "FooBar")
  13. {
  14. }
  15. }
  16. function check_params_decl_func($r, $f)
  17. {
  18. $c = $r->$f();
  19. $sep = $c instanceof ReflectionMethod ? $c->class . '::' : '';
  20. echo $f . ': ' . ($c ? $sep . $c->name : 'NULL') . "()\n";
  21. }
  22. function check_params_decl_class($r, $f)
  23. {
  24. $c = $r->$f();
  25. echo $f . ': ' . ($c ? $c->name : 'NULL') . "\n";
  26. }
  27. function check_params_func($r, $f)
  28. {
  29. echo $f . ': ';
  30. $v = $r->$f();
  31. var_dump($v);
  32. }
  33. function check_params($r)
  34. {
  35. echo "#####" . ($r instanceof ReflectionMethod ? $r->class . '::' : '') . $r->name . "()#####\n";
  36. $i = 0;
  37. foreach($r->getParameters() as $p)
  38. {
  39. echo "===" . $i . "===\n";
  40. $i++;
  41. check_params_func($p, 'getName');
  42. check_params_func($p, 'isPassedByReference');
  43. try
  44. {
  45. check_params_decl_class($p, 'getClass');
  46. }
  47. catch(ReflectionException $e)
  48. {
  49. echo $e->getMessage() . "\n";
  50. }
  51. check_params_decl_class($p, 'getDeclaringClass');
  52. // check_params_decl_func($p, 'getDeclaringFunction');
  53. check_params_func($p, 'isArray');
  54. check_params_func($p, 'allowsNull');
  55. check_params_func($p, 'isOptional');
  56. check_params_func($p, 'isDefaultValueAvailable');
  57. if ($p->isOptional())
  58. {
  59. check_params_func($p, 'getDefaultValue');
  60. }
  61. }
  62. }
  63. check_params(new ReflectionFunction('test'));
  64. check_params(new ReflectionMethod('test::method'));
  65. ?>
  66. ===DONE===
  67. <?php exit(0); ?>
  68. --EXPECT--
  69. #####test()#####
  70. ===0===
  71. getName: string(3) "nix"
  72. isPassedByReference: bool(false)
  73. getClass: NULL
  74. getDeclaringClass: NULL
  75. isArray: bool(false)
  76. allowsNull: bool(true)
  77. isOptional: bool(false)
  78. isDefaultValueAvailable: bool(false)
  79. ===1===
  80. getName: string(2) "ar"
  81. isPassedByReference: bool(false)
  82. getClass: NULL
  83. getDeclaringClass: NULL
  84. isArray: bool(true)
  85. allowsNull: bool(false)
  86. isOptional: bool(false)
  87. isDefaultValueAvailable: bool(false)
  88. ===2===
  89. getName: string(3) "ref"
  90. isPassedByReference: bool(true)
  91. getClass: NULL
  92. getDeclaringClass: NULL
  93. isArray: bool(false)
  94. allowsNull: bool(true)
  95. isOptional: bool(false)
  96. isDefaultValueAvailable: bool(false)
  97. ===3===
  98. getName: string(3) "std"
  99. isPassedByReference: bool(false)
  100. getClass: stdClass
  101. getDeclaringClass: NULL
  102. isArray: bool(false)
  103. allowsNull: bool(false)
  104. isOptional: bool(false)
  105. isDefaultValueAvailable: bool(false)
  106. ===4===
  107. getName: string(2) "na"
  108. isPassedByReference: bool(false)
  109. Class NonExistingClass does not exist
  110. getDeclaringClass: NULL
  111. isArray: bool(false)
  112. allowsNull: bool(false)
  113. isOptional: bool(false)
  114. isDefaultValueAvailable: bool(false)
  115. ===5===
  116. getName: string(3) "opt"
  117. isPassedByReference: bool(true)
  118. getClass: stdClass
  119. getDeclaringClass: NULL
  120. isArray: bool(false)
  121. allowsNull: bool(true)
  122. isOptional: bool(true)
  123. isDefaultValueAvailable: bool(true)
  124. getDefaultValue: NULL
  125. ===6===
  126. getName: string(3) "def"
  127. isPassedByReference: bool(false)
  128. getClass: NULL
  129. getDeclaringClass: NULL
  130. isArray: bool(false)
  131. allowsNull: bool(true)
  132. isOptional: bool(true)
  133. isDefaultValueAvailable: bool(true)
  134. getDefaultValue: string(6) "FooBar"
  135. #####test::method()#####
  136. ===0===
  137. getName: string(3) "nix"
  138. isPassedByReference: bool(false)
  139. getClass: NULL
  140. getDeclaringClass: test
  141. isArray: bool(false)
  142. allowsNull: bool(true)
  143. isOptional: bool(false)
  144. isDefaultValueAvailable: bool(false)
  145. ===1===
  146. getName: string(2) "ar"
  147. isPassedByReference: bool(false)
  148. getClass: NULL
  149. getDeclaringClass: test
  150. isArray: bool(true)
  151. allowsNull: bool(false)
  152. isOptional: bool(false)
  153. isDefaultValueAvailable: bool(false)
  154. ===2===
  155. getName: string(3) "ref"
  156. isPassedByReference: bool(true)
  157. getClass: NULL
  158. getDeclaringClass: test
  159. isArray: bool(false)
  160. allowsNull: bool(true)
  161. isOptional: bool(false)
  162. isDefaultValueAvailable: bool(false)
  163. ===3===
  164. getName: string(3) "std"
  165. isPassedByReference: bool(false)
  166. getClass: stdClass
  167. getDeclaringClass: test
  168. isArray: bool(false)
  169. allowsNull: bool(false)
  170. isOptional: bool(false)
  171. isDefaultValueAvailable: bool(false)
  172. ===4===
  173. getName: string(2) "na"
  174. isPassedByReference: bool(false)
  175. Class NonExistingClass does not exist
  176. getDeclaringClass: test
  177. isArray: bool(false)
  178. allowsNull: bool(false)
  179. isOptional: bool(false)
  180. isDefaultValueAvailable: bool(false)
  181. ===5===
  182. getName: string(3) "opt"
  183. isPassedByReference: bool(false)
  184. getClass: stdClass
  185. getDeclaringClass: test
  186. isArray: bool(false)
  187. allowsNull: bool(true)
  188. isOptional: bool(true)
  189. isDefaultValueAvailable: bool(true)
  190. getDefaultValue: NULL
  191. ===6===
  192. getName: string(3) "def"
  193. isPassedByReference: bool(false)
  194. getClass: NULL
  195. getDeclaringClass: test
  196. isArray: bool(false)
  197. allowsNull: bool(true)
  198. isOptional: bool(true)
  199. isDefaultValueAvailable: bool(true)
  200. getDefaultValue: string(6) "FooBar"
  201. ===DONE===