Edit report at http://bugs.php.net/bug.php?id=52648&edit=1

 ID:                 52648
 User updated by:    augusteiner at hotmail dot com
 Reported by:        augusteiner at hotmail dot com
 Summary:            interface/class
 Status:             Bogus
 Type:               Feature/Change Request
 Package:            Class/Object related
 Operating System:   Windows
 PHP Version:        Irrelevant
 Block user comment: N

 New Comment:

But if instead of an interface it was an abstract class with Equals
marked as 

abstract?



This situation could not be compatible with my first description!?


Previous Comments:
------------------------------------------------------------------------
[2010-08-20 07:11:02] [email protected]

This is by design. In your example, Entity::equals() is more restrictive
than IEntity::equals(): it wouldn't accept another class that
implemented IEntity independently of Entity, even though the interface
explicitly allows that.

------------------------------------------------------------------------
[2010-08-19 23:48:35] augusteiner at hotmail dot com

Description:
------------
A class that implements an interface should implement interface's
methods, but a method inside that class with type hint of class that
implements the interface would be accepted. Or not!?



After all, both are hierarchically identical.

Test script:
---------------
interface IEntity

{

    public function equals(IEntity $other);

}



class Entity implements IEntity

{

    public function equals(Entity $other)

    {

        return $this === $other;

    }

}

Actual result:
--------------
Fatal error: Declaration of Entity::equals() must be compatible with
that of IEntity::equals() in C:\wamp\www\horusweb\models\Coded.class.php


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52648&edit=1

Reply via email to