class_uses_basic2.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. --TEST--
  2. SPL: Test class_uses() function : basic
  3. --FILE--
  4. <?php
  5. /* Prototype : array class_uses(mixed what [, bool autoload ])
  6. * Description: Return all traits used by a class
  7. * Source code: ext/spl/php_spl.c
  8. * Alias to functions:
  9. */
  10. echo "*** Testing class_uses() : basic ***\n";
  11. trait foo { }
  12. class fooUser { use foo; }
  13. trait bar { }
  14. class barUser { use bar; }
  15. class foobarUser { use foo, bar; }
  16. /** There is no semantics for traits in the inheritance chain.
  17. Traits are flattend into a class, and that semantics is nothing
  18. like a type, or interface, and thus, not propergated. */
  19. class fooViaBarUser extends barUser { use foo; }
  20. class fooExtended extends fooUser {}
  21. s_var_dump(class_uses(new foobarUser));
  22. s_var_dump(class_uses('foobarUser'));
  23. s_var_dump(class_uses(new fooViaBarUser));
  24. s_var_dump(class_uses('fooViaBarUser'));
  25. s_var_dump(class_uses(new fooExtended));
  26. s_var_dump(class_uses('fooExtended'));
  27. function s_var_dump($arr) {
  28. krsort($arr);
  29. var_dump($arr);
  30. }
  31. ?>
  32. ===DONE===
  33. --EXPECT--
  34. *** Testing class_uses() : basic ***
  35. array(2) {
  36. ["foo"]=>
  37. string(3) "foo"
  38. ["bar"]=>
  39. string(3) "bar"
  40. }
  41. array(2) {
  42. ["foo"]=>
  43. string(3) "foo"
  44. ["bar"]=>
  45. string(3) "bar"
  46. }
  47. array(1) {
  48. ["foo"]=>
  49. string(3) "foo"
  50. }
  51. array(1) {
  52. ["foo"]=>
  53. string(3) "foo"
  54. }
  55. array(0) {
  56. }
  57. array(0) {
  58. }
  59. ===DONE===