Pour palier a l'absence de l'heritage multiple en PHP5, j'utilise des __call() pour appeler des methodes qui se trouvent dans d'autres classes.
Par exemple :
CODE
class A {
function toto(){
echo "coucou";
}
}
class B {
// bla bla
}
class C extends B {
// plein de truc mais pas de toto()
function __call($m, $arg){
return(A::$m());
}
}
$obj = new C;
$obj->toto();
function toto(){
echo "coucou";
}
}
class B {
// bla bla
}
class C extends B {
// plein de truc mais pas de toto()
function __call($m, $arg){
return(A::$m());
}
}
$obj = new C;
$obj->toto();
Dans ce cas, toto() n'existe ni dans C, ni dans B, mais celui de la method A est appele par le __call().
Le bleme, c'est que les arguments sont passees sous forme d'un tableau $arg alors comment puis-je ecrire ma fonction __call() pour eclater les arguments ?
Pour le moment, je fais des
CODE
function __call($m, $arg){
switch(count($arg)){
case 0:
return(A::$m());
case 1:
return(A::$m($arg[0]));
case 1:
return(A::$m($arg[0],$arg[1]));
...
}
}
switch(count($arg)){
case 0:
return(A::$m());
case 1:
return(A::$m($arg[0]));
case 1:
return(A::$m($arg[0],$arg[1]));
...
}
}
Mais c'est lourdingue
Merci
