It shows an error that fun1 is not implemented for the signature of the passed 
parameters.

But you could still provide a method that matches any number and type of 
parameters by adding the following method declaration.

/**
 * This method accepts parameters of any type and any count.  
 */
public function fun1($parameters ...) {
  /*
   * array(3) {
   *   [0] => string(1) "a"
   *   [1] => string(2) "b"
   *   [2] => string(3) "c"
   * }
   */
  var_dump($parameters);
}


The "..." notation (making it possible to have a dynamic count of parameters of 
the given type (missing typehint automatically chooses mixed)) is only allowed 
for the last parameter.

So method defintions like the following one are also possible:


public function fun1(string $firstParam, string $remainingParameters ...) {
  /*
   * string(1) "a"
   */
  var_dump($firstParam);

  /*
   * array(3) {
   *   [0] => string(1) "b"
   *   [1] => string(2) "c"
   * }
   */
  var_dump($remainingParameters);
}

-----Ursprüngliche Nachricht-----
Von: Alexey Zakhlestin [mailto:[EMAIL PROTECTED] 
Gesendet: Samstag, 13. Oktober 2007 23:20
An: Hans Moog
Cc: internals@lists.php.net
Betreff: Re: [PHP-DEV] Method overloading by method signature

can your patch handle the following situation? how?

class A
{
    public function fun1($a)
    {
        //…
    }

    public function fun1($a, $b)
    {
        //…
    }
}

$a = new A();
$a->fun1('a', 'b', 'c'); // which method is called here?

On 10/14/07, Hans Moog <[EMAIL PROTECTED]> wrote:
> Why would it be incompatible with php's dynamic nature? (I already heard many 
> people saying "that this is not the php way") But why ? Don't you like it or 
> do you think it is just not possible to be implemented in php?
>
> I could provide a patch that makes it possible (even with complete visibility 
> and inheritance rules). We already use it and it saves us a lot of code.
>
> I think it is better than the '$x = "defaultValue"' kind of way to accept 
> different count and types of parameters because it is MUCH more expressive 
> and intuitive.
>
> It wouldn't even break backward compatibility beause it is just "syntactical 
> sugar" to checking the variable types manually and then dispatching to the 
> right behaviour.
>
> -----Ursprüngliche Nachricht-----
> Von: Alexey Zakhlestin [mailto:[EMAIL PROTECTED]
> Gesendet: Samstag, 13. Oktober 2007 22:22
> An: Hans Moog
> Cc: internals@lists.php.net
> Betreff: Re: [PHP-DEV] Method overloading by method signature
>
> Hans, such overloading would be incompatible with php's dynamic nature
> As far as I remember, even type-hinting for basic-types (strings,
> integers) was rejected
>
> On 10/13/07, Hans Moog <[EMAIL PROTECTED]> wrote:
> > Will method overloading by method signature be implemented in php6 or
> > even php 5.3?
> >
> >
> >
> > Example:
> >
> > <?php
> >
> > namespace xyz;
> >
> >
> >
> > import core::TestClass;
> >
> >
> >
> > class Test extends TestClass {
> >
> >     public string function test(integer $int) {
> >
> >         return "Hi";
> >     }
> >
> >
> >
> >     public integer function test(string $string, integer $int) {
> >
> >         return $int;
> >     }
> > }
> >
> > ?>
> >
> >
> >
> > I think this would be a very big advantage and would help developers to
> > write better code.
> >
> >
>
>
> --
> Alexey Zakhlestin
> http://blog.milkfarmsoft.com/
>
>
>


-- 
Alexey Zakhlestin
http://blog.milkfarmsoft.com/


Reply via email to