On 10/14/07, Hans Moog <[EMAIL PROTECTED]> wrote: > 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.
Well, this looks exactly like incompatibility to me, because currently any function accepts any number of parameters (and you get non-explicit ones by using func_get_args()) > > /** > * 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/ > > > -- Alexey Zakhlestin http://blog.milkfarmsoft.com/