Re: Interface inheritance
| From: | Ferdinand Beyer | Date: | Tue, 20 Apr 2004 14:48:44 +0000 |
| Subject: | Re: Interface inheritance | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-9421@lists.php.net to get a copy of this message | ||
On 20 Apr 2004 at 17:38, Stanislav Malyshev wrote:
> FB>>interface A {
> FB>> public function doSomething($integer1, $integer2);
> FB>>}
> FB>>
> FB>>interface B {
> FB>> public function doSomething(MyObject $obj);
> FB>>}
> FB>>
> FB>>class Impl implements A, B
> FB>>{
> FB>> // "Overloaded" - supports both doSomething() interfaces
> FB>> public function doSomething()
> FB>> {
> FB>> // Use var_args to distinquish the two doSomething()'s
> FB>> }
> FB>>}
>
> The problem here that you can't know if Impl would actually accept
> MyObject or two integers as arguments. So if some method
requires object
> with interface A and it's passed Impl, it cannot actually be sure it
can
> use it as an A object.
Impl guarantees that by implementing interface A.
What if Impl::doSomething() would accept exactly two parameters,
but expects them to be arrays?
IMO you cannot enforce this strictness with loose types...
--
Ferdinand Beyer
<fb@fbeyer.com>