Annotation of embedaddon/php/ext/reflection/tests/ReflectionClass_newInstance_001.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: ReflectionClass::newInstance()
                      3: --CREDITS--
                      4: Robin Fernandes <robinf@php.net>
                      5: Steve Seear <stevseea@php.net>
                      6: --FILE--
                      7: <?php
                      8: class A {
                      9:        public function A() {
                     10:                echo "In constructor of class A\n"; 
                     11:        }       
                     12: }
                     13: 
                     14: class B {
                     15:        public function __construct($a, $b) {
                     16:                echo "In constructor of class B with args $a, $b\n";
                     17:        }
                     18: }
                     19: 
                     20: class C {
                     21:        protected function __construct() {
                     22:                echo "In constructor of class C\n"; 
                     23:        }
                     24: }
                     25: 
                     26: class D {
                     27:        private function __construct() {
                     28:                echo "In constructor of class D\n";             
                     29:        }
                     30: }
                     31: class E {      
                     32: }
                     33: 
                     34: 
                     35: $rcA = new ReflectionClass('A');
                     36: $rcB = new ReflectionClass('B');
                     37: $rcC = new ReflectionClass('C');
                     38: $rcD = new ReflectionClass('D');
                     39: $rcE = new ReflectionClass('E');
                     40: 
                     41: $a1 = $rcA->newInstance();
                     42: $a2 = $rcA->newInstance('x');
                     43: var_dump($a1, $a2);
                     44: 
                     45: $b1 = $rcB->newInstance();
                     46: $b2 = $rcB->newInstance('x', 123);
                     47: var_dump($b1, $b2);
                     48: 
                     49: try {
                     50:        $rcC->newInstance();
                     51:        echo "you should not see this\n";
                     52: } catch (Exception $e) {
                     53:        echo $e->getMessage() . "\n";
                     54: }
                     55: 
                     56: try {
                     57:        $rcD->newInstance();
                     58:        echo "you should not see this\n";
                     59: } catch (Exception $e) {
                     60:        echo $e->getMessage() . "\n";
                     61: }
                     62: 
                     63: $e1 = $rcE->newInstance();
                     64: var_dump($e1);
                     65: 
                     66: try {
                     67:        $e2 = $rcE->newInstance('x');
                     68:        echo "you should not see this\n";
                     69: } catch (Exception $e) {
                     70:        echo $e->getMessage() . "\n";
                     71: }
                     72: ?>
                     73: --EXPECTF--
                     74: In constructor of class A
                     75: In constructor of class A
                     76: object(A)#%d (0) {
                     77: }
                     78: object(A)#%d (0) {
                     79: }
                     80: 
                     81: Warning: Missing argument 1 for B::__construct() in %s on line 9
                     82: 
                     83: Warning: Missing argument 2 for B::__construct() in %s on line 9
                     84: 
                     85: Notice: Undefined variable: a in %s on line 10
                     86: 
                     87: Notice: Undefined variable: b in %s on line 10
                     88: In constructor of class B with args , 
                     89: In constructor of class B with args x, 123
                     90: object(B)#%d (0) {
                     91: }
                     92: object(B)#%d (0) {
                     93: }
                     94: Access to non-public constructor of class C
                     95: Access to non-public constructor of class D
                     96: object(E)#%d (0) {
                     97: }
                     98: Class E does not have a constructor, so you cannot pass any constructor arguments

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