Bug #12596 Updated: Definition of array using constants in array doesn't work

From: Date: Mon, 22 Oct 2001 00:07:04 +0000
Subject: Bug #12596 Updated: Definition of array using constants in array doesn't work
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-68663@lists.php.net to get a copy of this message
ID: 12596
Updated by: sniper
Reported By: jack@mobil.cz
Old Status: Suspended
Status: Closed
Bug Type: Class/Object related
Operating System: Linux
PHP Version: 4.0.5
New Comment:

Seems to work with PHP 4.1.0RC1:

object(b)(1) {
  ["a"]=>
  array(1) {
    [20]=>
    int(10)
  }
}


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

[2001-10-02 19:52:02] jeroen@php.net

It _is_ strange that no parse error is given. I think it should.

So IMO the bug is that it seems to work a bit, but doesn't. Either support this, or give parse
error. 

I see no reason to not support a random expression though... that expression-opcodes should
internally be moved to class initialization. Since PHP 4 doesn't have a real constructor, this
won't be realizable until ZE 2 I think.

Status->Suspended

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

[2001-10-02 18:34:02] sniper@php.net

Not a bug -> Bogus.

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

[2001-08-06 15:27:23] jeroen@php.net

This isn't supposed to work (class-var initing is not allowed for non-scalar (for example
array) values).

It is funny that it turns out to work this way, a parse-error would be better IMO.

But it is not a bug, changing status to feedback.

It is in the manual somewhere that this isn't allowed, try language -> classes and object

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

[2001-08-06 09:41:56] jack@mobil.cz

The following piece of code doesn't work:

<?
    define ('A', 20);

    class B
    {
	var $a = array(A => 10);
    }

    $b = new B();
    var_dump($b);
?>

It produces:

object(b)(1) {
  ["a"]=>
  array(1) {
    ["A"]=>
    int(10)
  }
}

which is unexpected (at least for me).

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



Edit this bug report at http://bugs.php.net/?id=12596&edit=1



Thread (6 messages)

« previous php.dev (#68663) next »