otro - PHP Llame a un método de instancia con call_user_func dentro de la misma clase
llamar funcion php desde otro php (3)
Estoy tratando de usar call_user_func
para llamar a un método desde otro método del mismo objeto, por ejemplo
class MyClass
{
public function __construct()
{
$this->foo(''bar'');
}
public function foo($method)
{
return call_user_func(array($this, $method), ''Hello World'');
}
public function bar($message)
{
echo $message;
}
}
new MyClass;
Debería devolver ''Hello World'' ...
¿Alguien sabe la forma correcta de lograr esto?
¡Muchas gracias!
nueva MyClass; Debería devolver ''Hello World'' ...
Un constructor no devuelve nada.
El código que has publicado debería funcionar bien. Una alternativa sería usar "funciones variables" como esta:
public function foo($method)
{
//safety first - you might not need this if the $method
//parameter is tightly controlled....
if (method_exists($this, $method))
{
return $this->$method(''Hello World'');
}
else
{
//oh dear - handle this situation in whatever way
//is appropriate
return null;
}
}
Esto funciona para mí:
<?php
class MyClass
{
public function __construct()
{
$this->foo(''bar'');
}
public function foo($method)
{
return call_user_func(array($this, $method), ''Hello World'');
}
public function bar($message)
{
echo $message;
}
}
$mc = new MyClass();
?>
Esto se imprime:
wraith:Downloads mwilliamson$ php userfunc_test.php
Hello World