diff options
Diffstat (limited to 'ext/spl/tests/class_uses_basic2.phpt')
-rw-r--r-- | ext/spl/tests/class_uses_basic2.phpt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/ext/spl/tests/class_uses_basic2.phpt b/ext/spl/tests/class_uses_basic2.phpt new file mode 100644 index 0000000..a0ffe8b --- /dev/null +++ b/ext/spl/tests/class_uses_basic2.phpt @@ -0,0 +1,69 @@ +--TEST-- +SPL: Test class_uses() function : basic +--FILE-- +<?php +/* Prototype : array class_uses(mixed what [, bool autoload ]) + * Description: Return all traits used by a class + * Source code: ext/spl/php_spl.c + * Alias to functions: + */ + +echo "*** Testing class_uses() : basic ***\n"; + + +trait foo { } +class fooUser { use foo; } + +trait bar { } +class barUser { use bar; } + +class foobarUser { use foo, bar; } + +/** There is no semantics for traits in the inheritance chain. + Traits are flattend into a class, and that semantics is nothing + like a type, or interface, and thus, not propergated. */ +class fooViaBarUser extends barUser { use foo; } + +class fooExtended extends fooUser {} + +s_var_dump(class_uses(new foobarUser)); +s_var_dump(class_uses('foobarUser')); +s_var_dump(class_uses(new fooViaBarUser)); +s_var_dump(class_uses('fooViaBarUser')); +s_var_dump(class_uses(new fooExtended)); +s_var_dump(class_uses('fooExtended')); + + +function s_var_dump($arr) { + krsort($arr); + var_dump($arr); +} +?> +===DONE=== +--EXPECT-- +*** Testing class_uses() : basic *** +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(2) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" +} +array(1) { + ["foo"]=> + string(3) "foo" +} +array(1) { + ["foo"]=> + string(3) "foo" +} +array(0) { +} +array(0) { +} +===DONE=== |