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

Reply via email to