Edit report at https://bugs.php.net/bug.php?id=45910&edit=1

 ID:                 45910
 Comment by:         semnanweb at gmail dot com
 Reported by:        s dot tretter at szene1 dot at
 Summary:            Cannot declare self-referencing constant
 Status:             Closed
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Linux
 PHP Version:        5.3.0alpha1
 Assigned To:        dmitry
 Block user comment: N
 Private report:     N

 New Comment:

same problem on php 5.4.8 apc 1.3.13

http://stackoverflow.com/questions/13272981/cannot-declare-self-referencing-constant/

the bugs for apc. but i need apc. i must restart apache for working sometimes 
and then same error. restart after some times error and etc ... :(


Previous Comments:
------------------------------------------------------------------------
[2008-08-26 08:38:45] dmi...@php.net

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



------------------------------------------------------------------------
[2008-08-25 19:58:46] fel...@php.net

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

------------------------------------------------------------------------
[2008-08-25 19:28:11] fel...@php.net

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 https://bugs.php.net/bug.php?id=45910&edit=1

Reply via email to