|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2009-09-05 10:08 UTC] phil at mossyvale dot co dot uk
 Description: ------------ If an interface defines a constant and is then implemented by a class which is then extended with a further class and both classes implement the interface, the second class may override the interface constant without a fatal error. Also present in 5.2.10 on FreeBSD 7.2 Reproduce code: --------------- --- From manual page: language.oop5.interfaces --- http://codepad.org/vStYX1Kz Expected result: ---------------- Fatal error: Cannot inherit previously-inherited constant c from interface ia ... on line 18 Actual result: -------------- Program outputs "OceanSea" which indicates that the interface constant is still available but the class constant with the same name overrides it. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 11:00:01 2025 UTC | 
<?php interface ia { const c = 'Sea'; } class Foo implements ia { // const c = "Lake"; // Attempting to override ia's constant c in // this class triggers a fatal error. } class FooBar extends Foo implements ia { const c = 'Ocean'; // No error, class constant // overriding ia's definition. public function show(){ // ia's definition is still accessible. return ia::c; } } $i = new FooBar; echo FooBar::c; echo $i->show(); ?>