Annotation of embedaddon/php/tests/classes/factory_and_singleton_001.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: ZE2 factory and singleton, test 1
! 3: --SKIPIF--
! 4: <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
! 5: --FILE--
! 6: <?php
! 7: class test {
! 8: protected $x;
! 9:
! 10: static private $test = NULL;
! 11: static private $cnt = 0;
! 12:
! 13: static function factory($x) {
! 14: if (test::$test) {
! 15: return test::$test;
! 16: } else {
! 17: test::$test = new test($x);
! 18: return test::$test;
! 19: }
! 20: }
! 21:
! 22: protected function __construct($x) {
! 23: test::$cnt++;
! 24: $this->x = $x;
! 25: }
! 26:
! 27: static function destroy() {
! 28: test::$test = NULL;
! 29: }
! 30:
! 31: protected function __destruct() {
! 32: test::$cnt--;
! 33: }
! 34:
! 35: public function get() {
! 36: return $this->x;
! 37: }
! 38:
! 39: static public function getX() {
! 40: if (test::$test) {
! 41: return test::$test->x;
! 42: } else {
! 43: return NULL;
! 44: }
! 45: }
! 46:
! 47: static public function count() {
! 48: return test::$cnt;
! 49: }
! 50: }
! 51:
! 52: echo "Access static members\n";
! 53: var_dump(test::getX());
! 54: var_dump(test::count());
! 55:
! 56: echo "Create x and y\n";
! 57: $x = test::factory(1);
! 58: $y = test::factory(2);
! 59: var_dump(test::getX());
! 60: var_dump(test::count());
! 61: var_dump($x->get());
! 62: var_dump($y->get());
! 63:
! 64: echo "Destruct x\n";
! 65: $x = NULL;
! 66: var_dump(test::getX());
! 67: var_dump(test::count());
! 68: var_dump($y->get());
! 69:
! 70: echo "Destruct y\n";
! 71: $y = NULL;
! 72: var_dump(test::getX());
! 73: var_dump(test::count());
! 74:
! 75: echo "Destruct static\n";
! 76: test::destroy();
! 77: var_dump(test::getX());
! 78: var_dump(test::count());
! 79:
! 80: echo "Done\n";
! 81: ?>
! 82: --EXPECT--
! 83: Access static members
! 84: NULL
! 85: int(0)
! 86: Create x and y
! 87: int(1)
! 88: int(1)
! 89: int(1)
! 90: int(1)
! 91: Destruct x
! 92: int(1)
! 93: int(1)
! 94: int(1)
! 95: Destruct y
! 96: int(1)
! 97: int(1)
! 98: Destruct static
! 99: NULL
! 100: int(0)
! 101: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>