File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / factory_and_singleton_001.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>