Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_isCloneable_001.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Testing ReflectionClass::isCloneable()
        !             3: --SKIPIF--
        !             4: <?php if (!extension_loaded('simplexml') || !extension_loaded('xmlwriter')) die("skip SimpleXML and XMLWriter is required for this test"); ?>
        !             5: --FILE--
        !             6: <?php
        !             7: 
        !             8: class foo {
        !             9: }
        !            10: $foo = new foo;
        !            11: 
        !            12: print "User class\n";
        !            13: $obj = new ReflectionClass($foo);
        !            14: var_dump($obj->isCloneable());
        !            15: $obj = new ReflectionObject($foo);
        !            16: var_dump($obj->isCloneable());
        !            17: $h = clone $foo;
        !            18: 
        !            19: class bar {
        !            20:        private function __clone() {
        !            21:        }
        !            22: }
        !            23: $bar = new bar;
        !            24: print "User class - private __clone\n";
        !            25: $obj = new ReflectionClass($bar);
        !            26: var_dump($obj->isCloneable());
        !            27: $obj = new ReflectionObject($bar);
        !            28: var_dump($obj->isCloneable());
        !            29: $h = clone $foo;
        !            30: 
        !            31: print "Closure\n";
        !            32: $closure = function () { };
        !            33: $obj = new ReflectionClass($closure);
        !            34: var_dump($obj->isCloneable());
        !            35: $obj = new ReflectionObject($closure);
        !            36: var_dump($obj->isCloneable());
        !            37: $h = clone $closure;
        !            38: 
        !            39: print "Internal class - SimpleXMLElement\n";
        !            40: $obj = new ReflectionClass('simplexmlelement');
        !            41: var_dump($obj->isCloneable());
        !            42: $obj = new ReflectionObject(new simplexmlelement('<test></test>'));
        !            43: var_dump($obj->isCloneable());
        !            44: $h = clone new simplexmlelement('<test></test>');
        !            45: 
        !            46: print "Internal class - XMLWriter\n";
        !            47: $obj = new ReflectionClass('xmlwriter');
        !            48: var_dump($obj->isCloneable());
        !            49: $obj = new ReflectionObject(new XMLWriter);
        !            50: var_dump($obj->isCloneable());
        !            51: $h = clone new xmlwriter;
        !            52: 
        !            53: ?>
        !            54: --EXPECTF--
        !            55: User class
        !            56: bool(true)
        !            57: bool(true)
        !            58: User class - private __clone
        !            59: bool(false)
        !            60: bool(false)
        !            61: Closure
        !            62: bool(true)
        !            63: bool(true)
        !            64: Internal class - SimpleXMLElement
        !            65: bool(true)
        !            66: bool(true)
        !            67: Internal class - XMLWriter
        !            68: bool(false)
        !            69: bool(false)
        !            70: 
        !            71: Fatal error: Trying to clone an uncloneable object of class XMLWriter in %s on line %d

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