19-09-2011, 07:56 PM
Une solution sympa pour gérer la surcharge de fonction, serait de recoder un système de name mangling.
Code PHP :
<?php
class myClass
{
public function __call($method, $args)
{
$name = $method;
foreach ($args as $arg)
$name .= '_'.gettype($arg);
if (method_exists($this, $name))
call_user_func_array(array($this, $name), $args);
else if (method_exists($this, $method))
call_user_func_array(array($this, $method.'_'), $args);
else
throw new Exception('Unable to call '.$method);
}
public function Attack_Type1($type1) {}
public function Attack_Type2($type2) {}
public function Attack_($all) {}
}
Il suffit de créer une classe de base et d'adopter une bonne convention de nom de méthodes.
En continuant un peu, on peut gérer les arguments de classes héritées sans trop du mal.