Annotation of embedaddon/php/ext/spl/tests/spl_autoload_008.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: SPL: spl_autoload() with exceptions
                      3: --INI--
                      4: include_path=.
                      5: --FILE--
                      6: <?php
                      7: 
                      8: function MyAutoLoad($className)
                      9: {
                     10:        echo __METHOD__ . "($className)\n";
                     11:        throw new Exception('Bla');
                     12: }
                     13: 
                     14: class MyAutoLoader
                     15: {
                     16:        static function autoLoad($className)
                     17:        {
                     18:                echo __METHOD__ . "($className)\n";
                     19:                throw new Exception('Bla');
                     20:        }
                     21:        
                     22:        function dynaLoad($className)
                     23:        {
                     24:                echo __METHOD__ . "($className)\n";
                     25:                throw new Exception('Bla');
                     26:        }
                     27: }
                     28: 
                     29: $obj = new MyAutoLoader;
                     30: 
                     31: $funcs = array(
                     32:        'MyAutoLoad',
                     33:        'MyAutoLoader::autoLoad',
                     34:        'MyAutoLoader::dynaLoad',
                     35:        array('MyAutoLoader', 'autoLoad'),
                     36:        array('MyAutoLoader', 'dynaLoad'),
                     37:        array($obj, 'autoLoad'),
                     38:        array($obj, 'dynaLoad'),
                     39: );
                     40: 
                     41: foreach($funcs as $idx => $func)
                     42: {
                     43:        echo "====$idx====\n";
                     44: 
                     45:        try
                     46:        {
                     47:                var_dump($func);
                     48:                spl_autoload_register($func);
                     49:                if (count(spl_autoload_functions()))
                     50:                {
                     51:                        echo "registered\n";
                     52:                        
                     53:                        var_dump(class_exists("NoExistingTestClass", true));
                     54:                }               
                     55:        }
                     56:        catch (Exception $e)
                     57:        {
                     58:                echo get_class($e) . ": " . $e->getMessage() . "\n";
                     59:        }
                     60: 
                     61:        spl_autoload_unregister($func);
                     62:        var_dump(count(spl_autoload_functions()));
                     63: }
                     64: 
                     65: ?>
                     66: ===DONE===
                     67: <?php exit(0); ?>
                     68: --EXPECTF--
                     69: ====0====
                     70: string(10) "MyAutoLoad"
                     71: registered
                     72: MyAutoLoad(NoExistingTestClass)
                     73: Exception: Bla
                     74: int(0)
                     75: ====1====
                     76: string(22) "MyAutoLoader::autoLoad"
                     77: registered
                     78: MyAutoLoader::autoLoad(NoExistingTestClass)
                     79: Exception: Bla
                     80: int(0)
                     81: ====2====
                     82: string(22) "MyAutoLoader::dynaLoad"
                     83: LogicException: Function 'MyAutoLoader::dynaLoad' not callable (non-static method MyAutoLoader::dynaLoad() should not be called statically)
                     84: int(0)
                     85: ====3====
                     86: array(2) {
                     87:   [0]=>
                     88:   string(12) "MyAutoLoader"
                     89:   [1]=>
                     90:   string(8) "autoLoad"
                     91: }
                     92: registered
                     93: MyAutoLoader::autoLoad(NoExistingTestClass)
                     94: Exception: Bla
                     95: int(0)
                     96: ====4====
                     97: array(2) {
                     98:   [0]=>
                     99:   string(12) "MyAutoLoader"
                    100:   [1]=>
                    101:   string(8) "dynaLoad"
                    102: }
                    103: LogicException: Passed array specifies a non static method but no object (non-static method MyAutoLoader::dynaLoad() should not be called statically)
                    104: int(0)
                    105: ====5====
                    106: array(2) {
                    107:   [0]=>
                    108:   object(MyAutoLoader)#%d (0) {
                    109:   }
                    110:   [1]=>
                    111:   string(8) "autoLoad"
                    112: }
                    113: registered
                    114: MyAutoLoader::autoLoad(NoExistingTestClass)
                    115: Exception: Bla
                    116: int(0)
                    117: ====6====
                    118: array(2) {
                    119:   [0]=>
                    120:   object(MyAutoLoader)#%d (0) {
                    121:   }
                    122:   [1]=>
                    123:   string(8) "dynaLoad"
                    124: }
                    125: registered
                    126: MyAutoLoader::dynaLoad(NoExistingTestClass)
                    127: Exception: Bla
                    128: int(0)
                    129: ===DONE===

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