Edit report at http://bugs.php.net/bug.php?id=51225&edit=1
ID: 51225
Updated by: tony2001@php.net
Reported by: tony at marston-home dot demon dot co dot uk
Summary: cannot define a class with the same name as an
interface
-Status: Re-Opened
+Status: Assigned
Type: Bug
Package: Class/Object related
Operating System: Windows XP
PHP Version: 5.2.13
-Assigned To:
+Assigned To: johannes
Previous Comments:
------------------------------------------------------------------------
[2010-03-08 10:35:06] tony at marston-home dot demon dot co dot uk
I disagree. class_exists() SHOULD check if that name has already been
declared as an interface otherwise you get the following situation:
if (!class_exists('foobar') { // returns false
class foobar{} // fails because interface exists
}
On the one hand it is saying "a class with the name 'foobar' does not
exist" which is immediately followed by "you cannot create a class with
the name 'foobar' as it already exists". That is not logical to me.
------------------------------------------------------------------------
[2010-03-08 00:55:52] johannes@php.net
I think the error message ("Cannot redeclare class") should be clearer
about classes and interfaces sharing the same namespace, which is needed
as type hints would be conflicting otherwise, but class_exists (by
default) should only check classes in my opinion. Any change should
consider that there's also interface_exists() and they should be
consistent.
------------------------------------------------------------------------
[2010-03-08 00:28:39] derick@php.net
Yes, I agree.
------------------------------------------------------------------------
[2010-03-08 00:23:50] tony at marston-home dot demon dot co dot uk
If an interface is a class, then it should show up in class_exists() and
get_declared_classes().
------------------------------------------------------------------------
[2010-03-08 00:02:25] kalle@php.net
Thats how the OO is designed, internally is interfaces just a class with
an additional flag.
So no bug here
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/bug.php?id=51225--
Edit this bug report at http://bugs.php.net/bug.php?id=51225&edit=1