#45910 [Ver->Asn]: Cannot declare self-referencing constant

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               45910
 Updated by:       [email protected]
 Reported By:      s dot tretter at szene1 dot at
-Status:           Verified
+Status:           Assigned
 Bug Type:         Scripting Engine problem
 Operating System: Linux
 PHP Version:      5.3.0alpha1
-Assigned To:      
+Assigned To:      dmitry


Previous Comments:
------------------------------------------------------------------------

[2008-08-25 19:58:46] [email protected]

I've added two tests (bug45910.phpt, bug45910_2.phpt), the latter
segfaults. (5_3 and HEAD)

------------------------------------------------------------------------

[2008-08-25 19:28:11] [email protected]

Here's a simple script based in your example:

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();

The error is only issued when BBB and CCC contains same value.

------------------------------------------------------------------------

[2008-08-25 18:34:38] s dot tretter at szene1 dot at

okay here a test script...
<?php
        class Test
        {
                const HOST_SK = 13;

                const NOSHOW = 'n77';

                const CONTENT_AD                = 'n10';
                const CONTENT_AD_MAIN           = 'n5';
                const CONTENT_AD_SALE           = 'n15';
                const SKYSCRAPER                = 'n4';
                const SITEBAR                   = 'n6';
                const BIGSIZE_BANNER            = 'n3';
                const CONTENT_USERPAGE          = self::NOSHOW;

                const HOCKEY1_SKYSCRAPER        = 'n4';
                const HOCKEY2_BIGSIZE_BANNER    = 'n3';

                const SPECIAL_FOTO_SKYSCRAPER   = 'n14';

                private static $host_matching   = array(
                        self::HOST_SK => array(
                                self::CONTENT_AD                       
=> 'n64',
                                self::CONTENT_AD_MAIN                  
=> 'n63',
                                self::CONTENT_AD_SALE                  
=> 'n65',
                                self::SKYSCRAPER                       
=> 'n62',
                                self::SITEBAR                          
=> 'n66',
                                self::BIGSIZE_BANNER                   
=> 'n61',
                                self::HOCKEY1_SKYSCRAPER               
        => 'n62',
                                self::HOCKEY2_BIGSIZE_BANNER           
=> 'n61',
                                self::SPECIAL_FOTO_SKYSCRAPER          
=> 'n67',
                                self::CONTENT_USERPAGE                 
=> self::NOSHOW
                        )
                );

                public static $objects = array();

                public static function addElement($object)
                {
                        self::$objects[] = $object;
                }

}

Test::addElement("socha");
?>

------------------------------------------------------------------------

[2008-08-25 18:10:42] s dot tretter at szene1 dot at

Description:
------------
The problem is that the same script worked in php5.2.6, but in php5.3
it results in a "Fatal error: Cannot declare self-referencing constant
'n61' in ..."

There is an array that uses many constants to set the array with
values. If I execute a method of the class this error message stops the
execution..but the line of the code has nothing todo with this array!
strange error... just let me send my test code, u will see it yourself.
If i modify the array, remove the lines that php is complain about,
some lines and so on.. it works.. but these lines are not differnt to
the ohter lines..!? I don't understand it.

Also tried with latest cvs snapshot

Reproduce code:
---------------
I have a test script, but I don't wanna publish the code... May I send
it directly to a php developer?

Expected result:
----------------
like in php5.2.6 this code should work!

Actual result:
--------------
Fatal error: Cannot declare self-referencing constant 'n61' in
/..../test.php on line 132



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45910&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.