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: [email protected]
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: [email protected]
> 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/