Return to array_fill_object.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
1.1 misho 1: --TEST-- 2: Test array_fill() function : usage variations - various object values for 'val' argument 3: --FILE-- 4: <?php 5: /* Prototype : array array_fill(int $start_key, int $num, mixed $val) 6: * Description: Create an array containing num elements starting with index start_key each initialized to val 7: * Source code: ext/standard/array.c 8: */ 9: 10: /* 11: * testing array_fill() by passing various object values for 'val' argument 12: */ 13: 14: echo "*** Testing array_fill() : usage variations ***\n"; 15: 16: // Initialise function arguments not being substituted 17: $start_key = 0; 18: $num = 2; 19: 20: // class without a member 21: class Test 22: { 23: } 24: 25: //class with public member, static member , constant and consturctor to initialize the public member 26: class Test1 27: { 28: const test1_constant = "test1"; 29: public static $test1_static = 0; 30: public $member1; 31: var $var1 = 30; 32: var $var2; 33: 34: function __construct($value1 , $value2) 35: { 36: $this->member1 = $value1; 37: $this->var2 = $value2; 38: } 39: } 40: 41: // child class which inherits parent class test1 42: class Child_test1 extends Test1 43: { 44: public $member2; 45: 46: function __construct($value1 , $value2 , $value3) 47: { 48: parent::__construct($value1 , $value2); 49: $this->member2 = $value3; 50: } 51: } 52: 53: //class with private member, static member, constant and constructor to initialize the private member 54: class Test2 55: { 56: const test2_constant = "test2"; 57: public static $test2_static = 0; 58: private $member1; 59: var $var1 = 30; 60: var $var2; 61: 62: function __construct($value1 , $value2) 63: { 64: $this->member1 = $value1; 65: $this->var2 = $value2; 66: } 67: } 68: 69: // child class which inherits parent class test2 70: class Child_test2 extends Test2 71: { 72: private $member1; 73: 74: function __construct($value1 , $value2 , $value3) 75: { 76: parent::__construct($value1 , $value2); 77: $this->member1 = $value3; 78: } 79: } 80: 81: // class with protected member, static member, constant and consturctor to initialize the protected member 82: class Test3 83: { 84: const test3_constant = "test3"; 85: public static $test3_static = 0; 86: protected $member1; 87: var $var1 = 30; 88: var $var2; 89: 90: function __construct($value1 , $value2) 91: { 92: $this->member1 = $value1; 93: $this->var2 = $value2; 94: } 95: } 96: 97: // child class which inherits parent class test3 98: class Child_test3 extends Test3 99: { 100: protected $member1; 101: 102: function __construct($value1 , $value2 , $value3) 103: { 104: parent::__construct($value1 , $value2); 105: $this->member1 = $value3; 106: } 107: } 108: 109: // class with public, private, protected members, static, constant members and constructor to initialize all the members 110: class Test4 111: { 112: const test4_constant = "test4"; 113: public static $test4_static = 0; 114: public $member1; 115: private $member2; 116: protected $member3; 117: 118: function __construct($value1 , $value2 , $value3) 119: { 120: $this->member1 = $value1; 121: $this->member2 = $value2; 122: $this->member3 = $value3; 123: } 124: } 125: 126: // child class which inherits parent class test4 127: class Child_test4 extends Test4 128: { 129: var $var1; 130: 131: function __construct($value1 , $value2 , $value3 , $value4) 132: { 133: parent::__construct($value1 , $value2 , $value3); 134: $this->var1 = $value4; 135: } 136: } 137: 138: // abstract class with public, private, protected members 139: abstract class AbstractClass 140: { 141: public $member1; 142: private $member2; 143: protected $member3; 144: var $var1 = 30; 145: 146: abstract protected function display(); 147: } 148: 149: // implement abstract 'AbstractClass' class 150: class ConcreteClass1 extends AbstractClass 151: { 152: protected function display() 153: { 154: echo "class name is ConcreteClass1 \n"; 155: } 156: } 157: 158: 159: // declarationn of the interface 'iTemplate' 160: interface iTemplate 161: { 162: public function display(); 163: } 164: 165: // implement the interface 'iTemplate' 166: class Template1 implements iTemplate 167: { 168: public function display() 169: { 170: echo "class name is Template1\n"; 171: } 172: } 173: 174: //array of object values for 'val' argument 175: $objects = array( 176: 177: /* 1 */ new Test(), 178: new Test1(100 , 101), 179: new Child_test1(100 , 101 , 102), 180: new Test2(100 , 101), 181: /* 5 */ new Child_test2(100 , 101 , 102), 182: new Test3(100 , 101), 183: new Child_test3(100 , 101 , 102), 184: new Test4( 100 , 101 , 102), 185: new Child_test4(100 , 101 , 102 , 103), 186: new ConcreteClass1(), 187: /* 11 */ new Template1() 188: ); 189: 190: // loop through each element of the array for 'val' argument 191: // check the working of array_fill() 192: echo "--- Testing array_fill() with different object values for 'val' argument ---\n"; 193: $counter = 1; 194: for($index = 0; $index < count($objects); $index ++) 195: { 196: echo "-- Iteration $counter --\n"; 197: $val = $objects[$index]; 198: 199: var_dump( array_fill($start_key,$num,$val) ); 200: 201: $counter++; 202: } 203: 204: echo "Done"; 205: ?> 206: --EXPECTF-- 207: *** Testing array_fill() : usage variations *** 208: --- Testing array_fill() with different object values for 'val' argument --- 209: -- Iteration 1 -- 210: array(2) { 211: [0]=> 212: object(Test)#%d (0) { 213: } 214: [1]=> 215: object(Test)#%d (0) { 216: } 217: } 218: -- Iteration 2 -- 219: array(2) { 220: [0]=> 221: object(Test1)#%d (3) { 222: ["member1"]=> 223: int(100) 224: ["var1"]=> 225: int(30) 226: ["var2"]=> 227: int(101) 228: } 229: [1]=> 230: object(Test1)#%d (3) { 231: ["member1"]=> 232: int(100) 233: ["var1"]=> 234: int(30) 235: ["var2"]=> 236: int(101) 237: } 238: } 239: -- Iteration 3 -- 240: array(2) { 241: [0]=> 242: object(Child_test1)#%d (4) { 243: ["member2"]=> 244: int(102) 245: ["member1"]=> 246: int(100) 247: ["var1"]=> 248: int(30) 249: ["var2"]=> 250: int(101) 251: } 252: [1]=> 253: object(Child_test1)#%d (4) { 254: ["member2"]=> 255: int(102) 256: ["member1"]=> 257: int(100) 258: ["var1"]=> 259: int(30) 260: ["var2"]=> 261: int(101) 262: } 263: } 264: -- Iteration 4 -- 265: array(2) { 266: [0]=> 267: object(Test2)#%d (3) { 268: ["member1":"Test2":private]=> 269: int(100) 270: ["var1"]=> 271: int(30) 272: ["var2"]=> 273: int(101) 274: } 275: [1]=> 276: object(Test2)#%d (3) { 277: ["member1":"Test2":private]=> 278: int(100) 279: ["var1"]=> 280: int(30) 281: ["var2"]=> 282: int(101) 283: } 284: } 285: -- Iteration 5 -- 286: array(2) { 287: [0]=> 288: object(Child_test2)#%d (4) { 289: ["member1":"Child_test2":private]=> 290: int(102) 291: ["member1":"Test2":private]=> 292: int(100) 293: ["var1"]=> 294: int(30) 295: ["var2"]=> 296: int(101) 297: } 298: [1]=> 299: object(Child_test2)#%d (4) { 300: ["member1":"Child_test2":private]=> 301: int(102) 302: ["member1":"Test2":private]=> 303: int(100) 304: ["var1"]=> 305: int(30) 306: ["var2"]=> 307: int(101) 308: } 309: } 310: -- Iteration 6 -- 311: array(2) { 312: [0]=> 313: object(Test3)#%d (3) { 314: ["member1":protected]=> 315: int(100) 316: ["var1"]=> 317: int(30) 318: ["var2"]=> 319: int(101) 320: } 321: [1]=> 322: object(Test3)#%d (3) { 323: ["member1":protected]=> 324: int(100) 325: ["var1"]=> 326: int(30) 327: ["var2"]=> 328: int(101) 329: } 330: } 331: -- Iteration 7 -- 332: array(2) { 333: [0]=> 334: object(Child_test3)#%d (3) { 335: ["member1":protected]=> 336: int(102) 337: ["var1"]=> 338: int(30) 339: ["var2"]=> 340: int(101) 341: } 342: [1]=> 343: object(Child_test3)#%d (3) { 344: ["member1":protected]=> 345: int(102) 346: ["var1"]=> 347: int(30) 348: ["var2"]=> 349: int(101) 350: } 351: } 352: -- Iteration 8 -- 353: array(2) { 354: [0]=> 355: object(Test4)#%d (3) { 356: ["member1"]=> 357: int(100) 358: ["member2":"Test4":private]=> 359: int(101) 360: ["member3":protected]=> 361: int(102) 362: } 363: [1]=> 364: object(Test4)#%d (3) { 365: ["member1"]=> 366: int(100) 367: ["member2":"Test4":private]=> 368: int(101) 369: ["member3":protected]=> 370: int(102) 371: } 372: } 373: -- Iteration 9 -- 374: array(2) { 375: [0]=> 376: object(Child_test4)#%d (4) { 377: ["var1"]=> 378: int(103) 379: ["member1"]=> 380: int(100) 381: ["member2":"Test4":private]=> 382: int(101) 383: ["member3":protected]=> 384: int(102) 385: } 386: [1]=> 387: object(Child_test4)#%d (4) { 388: ["var1"]=> 389: int(103) 390: ["member1"]=> 391: int(100) 392: ["member2":"Test4":private]=> 393: int(101) 394: ["member3":protected]=> 395: int(102) 396: } 397: } 398: -- Iteration 10 -- 399: array(2) { 400: [0]=> 401: object(ConcreteClass1)#%d (4) { 402: ["member1"]=> 403: NULL 404: ["member2":"AbstractClass":private]=> 405: NULL 406: ["member3":protected]=> 407: NULL 408: ["var1"]=> 409: int(30) 410: } 411: [1]=> 412: object(ConcreteClass1)#%d (4) { 413: ["member1"]=> 414: NULL 415: ["member2":"AbstractClass":private]=> 416: NULL 417: ["member3":protected]=> 418: NULL 419: ["var1"]=> 420: int(30) 421: } 422: } 423: -- Iteration 11 -- 424: array(2) { 425: [0]=> 426: object(Template1)#%d (0) { 427: } 428: [1]=> 429: object(Template1)#%d (0) { 430: } 431: } 432: Done