ID: 28269 Updated by: [EMAIL PROTECTED] Reported By: phpbug at gb404 dot com Status: Open Bug Type: Feature/Change Request Operating System: * PHP Version: 5.0.2 -Assigned To: +Assigned To: helly New Comment:
Your last complain is fixed too: [EMAIL PROTECTED] /usr/src/PHP_5_0 $ php -r 'interface foo{function bar();} class baz implements foo{}' make: `sapi/cli/php' is up to date. Fatal error: Class baz contains 1 abstract methods and must therefore be declared abstract (foo::bar) in Command line code on line 1 [EMAIL PROTECTED] /usr/src/PHP_5_0 $ php -v make: `sapi/cli/php' is up to date. PHP 5.0.3-dev (cli) (built: Sep 25 2004 00:37:01) (DEBUG) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.2-dev, Copyright (c) 1998-2004 Zend Technologies Previous Comments: ------------------------------------------------------------------------ [2004-09-25 20:16:46] 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. ------------------------------------------------------------------------ [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... } } ------------------------------------------------------------------------ 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