# php5 interfaces...

- Thread: https://externals.io/message/3367
- Original archive: https://news-web.php.net/php.internals/3367
- Started by Tony Bibbs on 2003-07-11T19:39:55+00:00
- Messages: 4
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #3367 — Tony Bibbs — 2003-07-11T19:39:55+00:00

URL: https://externals.io/message/3367#3367

In PHP5 I noticed this behaviou with interfaces.  If I have an interface 
with a method that takes no paramaters, an implementing class for that 
interfaces can have the same method take parameters...is that right?  
For example:

interface foo {
    public function myFunction();
}

class foobar implements foo {
   public function myFunction($someText)
  {
      echo $someText;
   }
}

$myObj = new foobar();
$myObj->myFunction('Testing, 1, 2, 3');

This code works.  To me it should flag an error or, at least a warning, 
no?  I can see the flexibility of allowing this as it provides a kind-of 
form of overloading but I want to make sure this behaves as intended 
before I make use of this feature/bug.

--Tony

---

## #3426 — Jan Schneider — 2003-07-15T21:53:02+00:00

URL: https://externals.io/message/3367#3426

Zitat von Marcus BXrger <marcus.boerger@t-online.de>:

> Hello Tony,
>
> Friday, July 11, 2003, 9:39:55 PM, you wrote:
>
> TB> In PHP5 I noticed this behaviou with interfaces.  If I have an
> interface
> TB> with a method that takes no paramaters, an implementing class for
> that
> TB> interfaces can have the same method take parameters...is that right?
> TB> For example:
>
> TB> interface foo {
> TB>     public function myFunction();
> TB> }
>
> TB> class foobar implements foo {
> TB>    public function myFunction($someText)
> TB>   {
> TB>       echo $someText;
> TB>    }
> TB> }
>
> TB> $myObj = new foobar();
> $myObj->>myFunction('Testing, 1, 2, 3');
>
> TB> This code works.  To me it should flag an error or, at least a
> warning,
> TB> no?  I can see the flexibility of allowing this as it provides a
> kind-of
> TB> form of overloading but I want to make sure this behaves as intended
> TB> before I make use of this feature/bug.
>
> TB> --Tony
>
>
>
> PHP is a wek typed language....i see your point but we are not strict
> typed.

What does this have to do with typed languages? Interfaces are not types of
method implementations or some such.

There's also a warning if you call a function/method with too few or too
much arguments, that seems much more similar to this case for me.

Jan.

--
http://www.horde.org - The Horde Project
http://www.ammma.de - discover your knowledge
http://www.tip4all.de - Deine private Tippgemeinschaft

---

## #3438 — Zeev Suraski — 2003-07-16T08:26:20+00:00

URL: https://externals.io/message/3367#3438 · In reply to: #3367

At 22:39 11/07/2003, Tony Bibbs wrote:
>In PHP5 I noticed this behaviou with interfaces.  If I have an interface 
>with a method that takes no paramaters, an implementing class for that 
>interfaces can have the same method take parameters...is that right?
>For example:
>
>interface foo {
>    public function myFunction();
>}
>
>class foobar implements foo {
>   public function myFunction($someText)
>  {
>      echo $someText;
>   }
>}
>
>$myObj = new foobar();
>$myObj->myFunction('Testing, 1, 2, 3');
>
>This code works.  To me it should flag an error or, at least a warning, no?

Yep, it should error out, it's a bug.   I'll look into it.

Zeev

---

## #3439 — Zeev Suraski — 2003-07-16T09:16:40+00:00

URL: https://externals.io/message/3367#3439 · In reply to: #3367

This bug should be gone now...

Thanks for the report!

Zeev

At 22:39 11/07/2003, Tony Bibbs wrote:
>In PHP5 I noticed this behaviou with interfaces.  If I have an interface 
>with a method that takes no paramaters, an implementing class for that 
>interfaces can have the same method take parameters...is that right?
>For example:
>
>interface foo {
>    public function myFunction();
>}
>
>class foobar implements foo {
>   public function myFunction($someText)
>  {
>      echo $someText;
>   }
>}
>
>$myObj = new foobar();
>$myObj->myFunction('Testing, 1, 2, 3');
>
>This code works.  To me it should flag an error or, at least a warning, 
>no?  I can see the flexibility of allowing this as it provides a kind-of 
>form of overloading but I want to make sure this behaves as intended 
>before I make use of this feature/bug.
>
>--Tony
