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