Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_implementsInterface_001.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: ReflectionClass::implementsInterface()
                      3: --CREDITS--
                      4: Robin Fernandes <robinf@php.net>
                      5: Steve Seear <stevseea@php.net>
                      6: --FILE--
                      7: <?php
                      8: interface I1 {}
                      9: class A implements I1 {}
                     10: class B extends A {}
                     11: 
                     12: interface I2 extends I1 {}
                     13: class C implements I2 {}
                     14: 
                     15: $classNames = array('A', 'B', 'C', 'I1', 'I2'); 
                     16: 
                     17: foreach ($classNames as $className) {
                     18:        $rcs[$className] = new ReflectionClass($className);
                     19: }
                     20: 
                     21: foreach ($rcs as $childName => $child) {
                     22:        foreach ($rcs as $parentName => $parent) {
                     23:                echo "Does " . $childName . " implement " . $parentName . "? \n";
                     24:                echo "   - Using object argument: ";
                     25:                try {
                     26:                        var_dump($child->implementsInterface($parent));
                     27:                } catch (Exception $e) {
                     28:                        echo $e->getMessage() . "\n";
                     29:                }               
                     30:                echo "   - Using string argument: ";
                     31:                try {
                     32:                        var_dump($child->implementsInterface($parentName));
                     33:                } catch (Exception $e) {
                     34:                        echo $e->getMessage() . "\n";
                     35:                }
                     36:        }
                     37: }
                     38: 
                     39: 
                     40: 
                     41: echo "\n\nTest bad arguments:\n";
                     42: try {
                     43:        var_dump($rcs['A']->implementsInterface());
                     44: } catch (Exception $e) {
                     45:        echo $e->getMessage() . "\n";
                     46: }
                     47: try {
                     48:        var_dump($rcs['A']->implementsInterface('C', 'C'));
                     49: } catch (Exception $e) {
                     50:        echo $e->getMessage() . "\n";
                     51: }
                     52: try {
                     53:        var_dump($rcs['A']->implementsInterface(null));
                     54: } catch (Exception $e) {
                     55:        echo $e->getMessage() . "\n";
                     56: }
                     57: try {
                     58:        var_dump($rcs['A']->implementsInterface('ThisClassDoesNotExist'));
                     59: } catch (Exception $e) {
                     60:        echo $e->getMessage() . "\n";
                     61: }
                     62: try {
                     63:        var_dump($rcs['A']->implementsInterface(2));
                     64: } catch (Exception $e) {
                     65:        echo $e->getMessage() . "\n";
                     66: }
                     67: ?>
                     68: --EXPECTF--
                     69: Does A implement A? 
                     70:    - Using object argument: Interface A is a Class
                     71:    - Using string argument: Interface A is a Class
                     72: Does A implement B? 
                     73:    - Using object argument: Interface B is a Class
                     74:    - Using string argument: Interface B is a Class
                     75: Does A implement C? 
                     76:    - Using object argument: Interface C is a Class
                     77:    - Using string argument: Interface C is a Class
                     78: Does A implement I1? 
                     79:    - Using object argument: bool(true)
                     80:    - Using string argument: bool(true)
                     81: Does A implement I2? 
                     82:    - Using object argument: bool(false)
                     83:    - Using string argument: bool(false)
                     84: Does B implement A? 
                     85:    - Using object argument: Interface A is a Class
                     86:    - Using string argument: Interface A is a Class
                     87: Does B implement B? 
                     88:    - Using object argument: Interface B is a Class
                     89:    - Using string argument: Interface B is a Class
                     90: Does B implement C? 
                     91:    - Using object argument: Interface C is a Class
                     92:    - Using string argument: Interface C is a Class
                     93: Does B implement I1? 
                     94:    - Using object argument: bool(true)
                     95:    - Using string argument: bool(true)
                     96: Does B implement I2? 
                     97:    - Using object argument: bool(false)
                     98:    - Using string argument: bool(false)
                     99: Does C implement A? 
                    100:    - Using object argument: Interface A is a Class
                    101:    - Using string argument: Interface A is a Class
                    102: Does C implement B? 
                    103:    - Using object argument: Interface B is a Class
                    104:    - Using string argument: Interface B is a Class
                    105: Does C implement C? 
                    106:    - Using object argument: Interface C is a Class
                    107:    - Using string argument: Interface C is a Class
                    108: Does C implement I1? 
                    109:    - Using object argument: bool(true)
                    110:    - Using string argument: bool(true)
                    111: Does C implement I2? 
                    112:    - Using object argument: bool(true)
                    113:    - Using string argument: bool(true)
                    114: Does I1 implement A? 
                    115:    - Using object argument: Interface A is a Class
                    116:    - Using string argument: Interface A is a Class
                    117: Does I1 implement B? 
                    118:    - Using object argument: Interface B is a Class
                    119:    - Using string argument: Interface B is a Class
                    120: Does I1 implement C? 
                    121:    - Using object argument: Interface C is a Class
                    122:    - Using string argument: Interface C is a Class
                    123: Does I1 implement I1? 
                    124:    - Using object argument: bool(true)
                    125:    - Using string argument: bool(true)
                    126: Does I1 implement I2? 
                    127:    - Using object argument: bool(false)
                    128:    - Using string argument: bool(false)
                    129: Does I2 implement A? 
                    130:    - Using object argument: Interface A is a Class
                    131:    - Using string argument: Interface A is a Class
                    132: Does I2 implement B? 
                    133:    - Using object argument: Interface B is a Class
                    134:    - Using string argument: Interface B is a Class
                    135: Does I2 implement C? 
                    136:    - Using object argument: Interface C is a Class
                    137:    - Using string argument: Interface C is a Class
                    138: Does I2 implement I1? 
                    139:    - Using object argument: bool(true)
                    140:    - Using string argument: bool(true)
                    141: Does I2 implement I2? 
                    142:    - Using object argument: bool(true)
                    143:    - Using string argument: bool(true)
                    144: 
                    145: 
                    146: Test bad arguments:
                    147: 
                    148: Warning: ReflectionClass::implementsInterface() expects exactly 1 parameter, 0 given in %s on line 37
                    149: NULL
                    150: 
                    151: Warning: ReflectionClass::implementsInterface() expects exactly 1 parameter, 2 given in %s on line 42
                    152: NULL
                    153: Parameter one must either be a string or a ReflectionClass object
                    154: Interface ThisClassDoesNotExist does not exist
                    155: Parameter one must either be a string or a ReflectionClass object

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>