Edit report at http://bugs.php.net/bug.php?id=51225&edit=1
ID: 51225 Updated by: [email protected] 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: Bogus +Status: Re-Opened Type: Bug Package: Class/Object related Operating System: Windows XP PHP Version: 5.2.13 New Comment: Yes, I agree. Previous Comments: ------------------------------------------------------------------------ [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] [email protected] Thats how the OO is designed, internally is interfaces just a class with an additional flag. So no bug here ------------------------------------------------------------------------ [2010-03-06 18:50:41] tony at marston-home dot demon dot co dot uk Description: ------------ When I try to define a particular class it fails with "cannot redeclare class ...". When I check with class_exists('...') it returns false, but I still cannot create it. I eventually found some previous code which uses the same name to define an interface. Test script: --------------- Interface Singleton{public static function instance();} if (class_exists('Singleton')) { $reason = 'class already exists'; } else { class Singleton{ static function getInstance(){ return true; } } } Expected result: ---------------- If it is not possible to define a class and an interface with the same name, then the class_exists() function should also include interface names. If it IS possible to have a class and an interface with the same name, then the compiler should NOT reject the second reference. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51225&edit=1
