php-src/ext/standard/tests/array/array_fill_object.phpt

433 lines
7.9 KiB
Plaintext
Raw Normal View History

--TEST--
Test array_fill() function : usage variations - various object values for 'val' argument
--FILE--
<?php
/* Prototype : array array_fill(int $start_key, int $num, mixed $val)
* Description: Create an array containing num elements starting with index start_key each initialized to val
* Source code: ext/standard/array.c
*/
/*
* testing array_fill() by passing various object values for 'val' argument
*/
echo "*** Testing array_fill() : usage variations ***\n";
// Initialise function arguments not being substituted
$start_key = 0;
$num = 2;
// class without a member
class Test
{
}
//class with public member, static member , constant and consturctor to initialize the public member
class Test1
{
const test1_constant = "test1";
public static $test1_static = 0;
public $member1;
var $var1 = 30;
var $var2;
function __construct($value1 , $value2)
{
$this->member1 = $value1;
$this->var2 = $value2;
}
}
// child class which inherits parent class test1
class Child_test1 extends Test1
{
public $member2;
function __construct($value1 , $value2 , $value3)
{
parent::__construct($value1 , $value2);
$this->member2 = $value3;
}
}
//class with private member, static member, constant and constructor to initialize the private member
class Test2
{
const test2_constant = "test2";
public static $test2_static = 0;
private $member1;
var $var1 = 30;
var $var2;
function __construct($value1 , $value2)
{
$this->member1 = $value1;
$this->var2 = $value2;
}
}
// child class which inherits parent class test2
class Child_test2 extends Test2
{
private $member1;
function __construct($value1 , $value2 , $value3)
{
parent::__construct($value1 , $value2);
$this->member1 = $value3;
}
}
// class with protected member, static member, constant and consturctor to initialize the protected member
class Test3
{
const test3_constant = "test3";
public static $test3_static = 0;
protected $member1;
var $var1 = 30;
var $var2;
function __construct($value1 , $value2)
{
$this->member1 = $value1;
$this->var2 = $value2;
}
}
// child class which inherits parent class test3
class Child_test3 extends Test3
{
protected $member1;
function __construct($value1 , $value2 , $value3)
{
parent::__construct($value1 , $value2);
$this->member1 = $value3;
}
}
// class with public, private, protected members, static, constant members and constructor to initialize all the members
class Test4
{
const test4_constant = "test4";
public static $test4_static = 0;
public $member1;
private $member2;
protected $member3;
function __construct($value1 , $value2 , $value3)
{
$this->member1 = $value1;
$this->member2 = $value2;
$this->member3 = $value3;
}
}
// child class which inherits parent class test4
class Child_test4 extends Test4
{
var $var1;
function __construct($value1 , $value2 , $value3 , $value4)
{
parent::__construct($value1 , $value2 , $value3);
$this->var1 = $value4;
}
}
// abstract class with public, private, protected members
abstract class AbstractClass
{
public $member1;
private $member2;
protected $member3;
var $var1 = 30;
abstract protected function display();
}
// implement abstract 'AbstractClass' class
class ConcreteClass1 extends AbstractClass
{
protected function display()
{
echo "class name is ConcreteClass1 \n";
}
}
// declarationn of the interface 'iTemplate'
interface iTemplate
{
public function display();
}
// implement the interface 'iTemplate'
class Template1 implements iTemplate
{
public function display()
{
echo "class name is Template1\n";
}
}
//array of object values for 'val' argument
$objects = array(
/* 1 */ new Test(),
new Test1(100 , 101),
new Child_test1(100 , 101 , 102),
new Test2(100 , 101),
/* 5 */ new Child_test2(100 , 101 , 102),
new Test3(100 , 101),
new Child_test3(100 , 101 , 102),
new Test4( 100 , 101 , 102),
new Child_test4(100 , 101 , 102 , 103),
new ConcreteClass1(),
/* 11 */ new Template1()
);
// loop through each element of the array for 'val' argument
// check the working of array_fill()
echo "--- Testing array_fill() with different object values for 'val' argument ---\n";
$counter = 1;
for($index = 0; $index < count($objects); $index ++)
{
echo "-- Iteration $counter --\n";
$val = $objects[$index];
var_dump( array_fill($start_key,$num,$val) );
$counter++;
}
echo "Done";
?>
--EXPECTF--
*** Testing array_fill() : usage variations ***
--- Testing array_fill() with different object values for 'val' argument ---
-- Iteration 1 --
array(2) {
[0]=>
object(Test)#%d (0) {
}
[1]=>
object(Test)#%d (0) {
}
}
-- Iteration 2 --
array(2) {
[0]=>
object(Test1)#%d (3) {
["member1"]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Test1)#%d (3) {
["member1"]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 3 --
array(2) {
[0]=>
object(Child_test1)#%d (4) {
["member2"]=>
int(102)
["member1"]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Child_test1)#%d (4) {
["member2"]=>
int(102)
["member1"]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 4 --
array(2) {
[0]=>
object(Test2)#%d (3) {
["member1":"Test2":private]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Test2)#%d (3) {
["member1":"Test2":private]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 5 --
array(2) {
[0]=>
object(Child_test2)#%d (4) {
["member1":"Child_test2":private]=>
int(102)
["member1":"Test2":private]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Child_test2)#%d (4) {
["member1":"Child_test2":private]=>
int(102)
["member1":"Test2":private]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 6 --
array(2) {
[0]=>
object(Test3)#%d (3) {
["member1":protected]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Test3)#%d (3) {
["member1":protected]=>
int(100)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 7 --
array(2) {
[0]=>
object(Child_test3)#%d (3) {
["member1":protected]=>
int(102)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
[1]=>
object(Child_test3)#%d (3) {
["member1":protected]=>
int(102)
["var1"]=>
int(30)
["var2"]=>
int(101)
}
}
-- Iteration 8 --
array(2) {
[0]=>
object(Test4)#%d (3) {
["member1"]=>
int(100)
["member2":"Test4":private]=>
int(101)
["member3":protected]=>
int(102)
}
[1]=>
object(Test4)#%d (3) {
["member1"]=>
int(100)
["member2":"Test4":private]=>
int(101)
["member3":protected]=>
int(102)
}
}
-- Iteration 9 --
array(2) {
[0]=>
object(Child_test4)#%d (4) {
["var1"]=>
int(103)
["member1"]=>
int(100)
["member2":"Test4":private]=>
int(101)
["member3":protected]=>
int(102)
}
[1]=>
object(Child_test4)#%d (4) {
["var1"]=>
int(103)
["member1"]=>
int(100)
["member2":"Test4":private]=>
int(101)
["member3":protected]=>
int(102)
}
}
-- Iteration 10 --
array(2) {
[0]=>
object(ConcreteClass1)#%d (4) {
["member1"]=>
NULL
["member2":"AbstractClass":private]=>
NULL
["member3":protected]=>
NULL
["var1"]=>
int(30)
}
[1]=>
object(ConcreteClass1)#%d (4) {
["member1"]=>
NULL
["member2":"AbstractClass":private]=>
NULL
["member3":protected]=>
NULL
["var1"]=>
int(30)
}
}
-- Iteration 11 --
array(2) {
[0]=>
object(Template1)#%d (0) {
}
[1]=>
object(Template1)#%d (0) {
}
}
Done