What about the addition of overloading for PHP 6?
I am not totally up to date on the developments of the parameter type
hints. I briefly read the meeting minutes for PHP 6.
What about with the type hints we have now?
class moo
{
public static function foo(FooClass $FooVar)
{
// do something
}
public static function foo(BooClass $BooVar)
{
// do something
}
}
I have a project where we had to do a sort of pseudo overloading
Class moo
{
/**
* Accept the superclass or any of its sub classes
*/
public static function foo(FooSuperClass $Foo)
{
switch (true)
{
case $Foo instanceof FooClass:
$method = 'fooFoo';
break;
case $Foo instanceof BooClass:
$method = 'fooBoo';
break;
default:
throw new Exception('Unrecognized type: ' .
get_class($Foo));
break;
}
call_user_func(array(self, $method), $Foo);
}
private static function fooFoo(FooClass $FooVar)
{
// do something
}
private static function fooBoo(BooClass $BooVar)
{
// do something
}
}
Mark
I'm developing a PHP framework and had the same issue sometimes... I think
it was already discussed in the list, did you searched the archives?
Saulo
On Thu, Jun 19, 2008 at 9:58 AM, Tinsley, Mark MTinsley@dallasairmotive.com
wrote:
What about the addition of overloading for PHP 6?
I am not totally up to date on the developments of the parameter type
hints. I briefly read the meeting minutes for PHP 6.What about with the type hints we have now?
class moo
{public static function foo(FooClass $FooVar)
{
// do something
}public static function foo(BooClass $BooVar)
{
// do something
}
}I have a project where we had to do a sort of pseudo overloading
Class moo
{
/**
* Accept the superclass or any of its sub classes
*/
public static function foo(FooSuperClass $Foo)
{
switch (true)
{
case $Foo instanceof FooClass:
$method = 'fooFoo';
break;case $Foo instanceof BooClass: $method = 'fooBoo'; break; default: throw new Exception('Unrecognized type: ' .
get_class($Foo));
break;
}call_user_func(array(self, $method), $Foo);
}
private static function fooFoo(FooClass $FooVar)
{
// do something
}private static function fooBoo(BooClass $BooVar)
{
// do something
}
}Mark