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>