Skip to main content

Hi, I'm Mariano Guerra, below is my blog, if you want to learn more about me and what I do check a summary here: marianoguerra.github.io or find me on twitter @warianoguerra or Mastodon @marianoguerra@hachyderm.io

argumentos variables en php

queres tener una funcion con argumentos variables en php?
tenes un array y queres llamar a una funcion con esos argumentos?
's/funcion/metodo/g? ;)

entonces este post es para vos!

salio marquerinero el arranque...

bueno ante esas necesidades hice este ejemplito, es un poco tricky pero se puede hacer..

aca va

<?php

function suma($num1, $num2)
{
return $num1 + $num2;
}

function resta($num1, $num2)
{
return $num1 - $num2;
}

function operacion()
{
$args = func_get_args();
$op = array_shift($args);
print($op . '=');
if($op == "suma")
{
print(call_user_func_array('suma', $args));
}
elseif($op == "resta")
{
print(call_user_func_array('resta', $args));
}
else
{
print('?');
}
}

class Foo
{
public function __construct()
{

}

public function suma($num1, $num2)
{
return $num1 + $num2;
}

public static function resta($num1, $num2)
{
return $num1 - $num2;
}
}

$foo = new Foo();

operacion("suma", 2, 2);
operacion("resta", 2, 2);
operacion("asd", 2, 2);
// como llamar a un metodo de un objeto
print('$foo->suma=' . call_user_func_array(array($foo, 'suma'), array(2, 2)));
// como llamar al metodo de una clase
print('Foo::resta=' . call_user_func_array(array('Foo', 'resta'), array(2, 2)));

?>