parameters_002.phpt 4.7 KB

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