@ -0,0 +1,28 @@
--TEST--
Bug #45910 (Cannot declare self-referencing constant)
--FILE--
<?php
class foo {
const AAA = 'x';
const BBB = 'a';
const CCC = 'a';
const DDD = self::AAA;
private static $foo = array(
self::BBB => 'a',
self::CCC => 'b',
self::DDD => self::AAA
);
public static function test() {
self::$foo;
}
foo::test();
print 1;
?>
--EXPECT--
1
@ -0,0 +1,22 @@
Testing const names
const a = 'a';
const A = 'b';
class a {
const a = 'c';
const A = 'd';
var_dump(a, A, a::a, a::A);
unicode(1) "a"
unicode(1) "b"
unicode(1) "c"
unicode(1) "d"
@ -0,0 +1,17 @@
Defining constant twice with two different forms
define('a', 2);
const a = 1;
if (defined('a')) {
print a;
--EXPECTF--
Notice: Constant a already defined in %s on line %d
2
@ -0,0 +1,23 @@
Accessing constants inside namespace
namespace foo::x;
const x = 2;
class x {
const x = 1;
var_dump(namespace::x, x::x, namespace::x::x);
var_dump(defined('foo::x::x'));
int(2)
int(1)
bool(true)
@ -0,0 +1,20 @@
Trying inherit abstract function twice
interface d {
static function B();
interface c {
function b();
class_alias('c', 'w');
interface a extends d, w { }
Fatal error: Can't inherit abstract function c::B() (previously declared abstract in d) in %s on line %d