Re: Possible Bug with Interface, Constants and Inheritance

From: Date: Mon, 27 Jun 2016 15:31:44 +0000
Subject: Re: Possible Bug with Interface, Constants and Inheritance
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-94282@lists.php.net to get a copy of this message
Am 27.06.16 um 15:28 schrieb Karl Pflästerer: > Andreas Heigl <andreas@heigl.org> writes: > >> Am 27.06.16 um 15:01 schrieb Karl Pflästerer: >>> interface I1 { const C1 = '';} >>> class C3 implements I1 { const C1 = 'c2';} >>> $c3 = new C3; >>> var_dump($c3::C1); >> >> According to https://3v4l.org/jIcs6 it looks like >> that's intended >> behaviour ;) > > But why does it work in the CLI if I write the code (instead of using a > script)? That's my question. It doesn't. At least not on my machine. This is the output I get: $ php -v PHP 7.1.0alpha2 (cli) (built: Jun 24 2016 13:50:28) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies $ php -a Interactive shell php > interface I1 { const C1 = '';} php > class C3 implements I1 { const C1 = 'c2';} PHP Fatal error: Cannot inherit previously-inherited or override constant C1 from interface I1 in php shell code on line 1 Fatal error: Cannot inherit previously-inherited or override constant C1 from interface I1 in php shell code on line 1 php > $c3 = new C3; php > var_dump($c3::C1); string(2) "c2" php > So it crashes with a fatal error when Implementing the interface. It'S interesting though that the script allows me to instantiate the class nonetheless. That's right. Perhaps some C-Guru can shed some light here? Cheers Andreas -- ,,, (o o) +---------------------------------------------------------ooO-(_)-Ooo-+ | Andreas Heigl | | mailto:andreas@heigl.org N 50°22'59.5" E 08°23'58" | | http://andreas.heigl.org http://hei.gl/wiFKy7 | +---------------------------------------------------------------------+ | http://hei.gl/root-ca | +---------------------------------------------------------------------+

Attachment: [application/pkcs7-signature] S/MIME Cryptographic Signature smime.p7s
« previous php.internals (#94282) next »