ID: 28269 Comment by: bobalong at gmx dot net Reported By: phpbug at gb404 dot com Status: Open Bug Type: Feature/Change Request Operating System: * PHP Version: 5.0.2 New Comment:
Cool, and I'm sure that's not at the top of the priority list. However, in the example above, if foo() is not implemented in class c, no compile error is thrown. The developer must instantiate the class prior to knowing it is abstract. This forces the developer to manually ensure that all abstract members from higher up in an inheritence heirarchy have been implemented. Previous Comments: ------------------------------------------------------------------------ [2004-09-25 20:16:06] bobalong at gmx dot net Cool, and I'm sure that's not at the top of the priority list. However, in the example above, if foo() is not implemented in class c, no compile error is thrown. The developer must instantiate the class prior to knowing it is abstract. This forces the developer to manually ensure that all abstract members from higher up in an inheritence heirarchy have been implemented. Is this intentional behaviour? ------------------------------------------------------------------------ [2004-09-25 00:22:21] [EMAIL PROTECTED] Abstract redefinition is a feature request - the rest was fixed in 5.0.0 ------------------------------------------------------------------------ [2004-09-25 00:21:59] [EMAIL PROTECTED] Abstract redefinition is a feature request - the rest was fixed in 5.0.0 ------------------------------------------------------------------------ [2004-09-24 17:46:25] bobalong at gmx dot net IMO it's not really a problem with instantiation. The perfect solution would be if a compile-time error was thrown asking the developer to implement the missing method(s), or declare the class abstract, just as is done when partially implementing an interface in a class that is not declared abstract. As a side note on this issue, another nice feature that would make a lot of PHP5 OO code more readable and intuitave would be the allowance by the parser for the re-declaration of abstract functions. At the moment the usual "cannot re-dfeine function" message gets thrown. This just needs to ignore abstract functions (in abstract classes), i.e. interface a { function foo(); } abstract class b implements a { abstract function foo(); } class c extends b { function foo() { // do something... } } ------------------------------------------------------------------------ [2004-05-19 14:27:07] cunha at gabcmt dot eb dot mil dot br I'm experiencing the same problem. It's very difficult to discover the missing method if PHP doesn't give any hint. The message given for the first class that "implements" some interface is complete and has IMHO all necessary information to the programmer. But the message given for any subclasses is generic and doesn't tell which methods are missing and why. ------------------------------------------------------------------------ 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/28269 -- Edit this bug report at http://bugs.php.net/?id=28269&edit=1