1--TEST-- 2Test 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 14echo "*** 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 21class Test 22{ 23} 24 25//class with public member, static member , constant and consturctor to initialize the public member 26class 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 42class 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 54class 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 70class 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 82class 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 98class 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 110class 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 127class 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 139abstract 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 150class 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' 160interface iTemplate 161{ 162 public function display(); 163} 164 165// implement the interface 'iTemplate' 166class 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() 192echo "--- Testing array_fill() with different object values for 'val' argument ---\n"; 193$counter = 1; 194for($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 204echo "Done"; 205?> 206--EXPECTF-- 207*** Testing array_fill() : usage variations *** 208--- Testing array_fill() with different object values for 'val' argument --- 209-- Iteration 1 -- 210array(2) { 211 [0]=> 212 object(Test)#%d (0) { 213 } 214 [1]=> 215 object(Test)#%d (0) { 216 } 217} 218-- Iteration 2 -- 219array(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 -- 240array(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 -- 265array(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 -- 286array(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 -- 311array(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 -- 332array(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 -- 353array(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 -- 374array(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 -- 399array(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 -- 424array(2) { 425 [0]=> 426 object(Template1)#%d (0) { 427 } 428 [1]=> 429 object(Template1)#%d (0) { 430 } 431} 432Done 433