1--TEST--
2Test properties with array default values using class constants as keys and values.
3--FILE--
4<?php
5  class X
6  {
7      // Static and instance array using class constants
8      public static $sa_x = array(B::KEY => B::VALUE);
9      public $a_x = array(B::KEY => B::VALUE);
10  }
11
12  class B
13  {
14      const KEY = "key";
15      const VALUE = "value";
16
17      // Static and instance array using class constants with self
18      public static $sa_b = array(self::KEY => self::VALUE);
19      public $a_b = array(self::KEY => self::VALUE);
20  }
21
22  class C extends B
23  {
24      // Static and instance array using class constants with parent
25      public static $sa_c_parent = array(parent::KEY => parent::VALUE);
26      public $a_c_parent = array(parent::KEY => parent::VALUE);
27
28      // Static and instance array using class constants with self (constants should be inherited)
29      public static $sa_c_self = array(self::KEY => self::VALUE);
30      public $a_c_self = array(self::KEY => self::VALUE);
31
32      // Should also include inherited properties from B.
33  }
34
35  echo "\nStatic properties:\n";
36  var_dump(X::$sa_x, B::$sa_b, C::$sa_b, C::$sa_c_parent, C::$sa_c_self);
37
38  echo "\nInstance properties:\n";
39  $x = new x;
40  $b = new B;
41  $c = new C;
42  var_dump($x, $b, $c);
43?>
44--EXPECTF--
45
46Static properties:
47array(1) {
48  ["key"]=>
49  string(5) "value"
50}
51array(1) {
52  ["key"]=>
53  string(5) "value"
54}
55array(1) {
56  ["key"]=>
57  string(5) "value"
58}
59array(1) {
60  ["key"]=>
61  string(5) "value"
62}
63array(1) {
64  ["key"]=>
65  string(5) "value"
66}
67
68Instance properties:
69object(X)#%d (1) {
70  ["a_x"]=>
71  array(1) {
72    ["key"]=>
73    string(5) "value"
74  }
75}
76object(B)#%d (1) {
77  ["a_b"]=>
78  array(1) {
79    ["key"]=>
80    string(5) "value"
81  }
82}
83object(C)#%d (3) {
84  ["a_c_parent"]=>
85  array(1) {
86    ["key"]=>
87    string(5) "value"
88  }
89  ["a_c_self"]=>
90  array(1) {
91    ["key"]=>
92    string(5) "value"
93  }
94  ["a_b"]=>
95  array(1) {
96    ["key"]=>
97    string(5) "value"
98  }
99}
100