Comunidad de diseño web y desarrollo en internet online

Duda callback call_user_func no funciona

Citar            
MensajeEscrito el 11 Jun 2015 03:04 pm
Saludos amigos, alguien sabria decirme porque el siguiente código no me muestra por pantalla la cadena "hola" ?

Como hay que decirle a call_user_func que el ambito de la funcion hola esta fuera de la funcion diHola?

No quiero cambiar la estructura de la clase, el código tiene que funcionar tal como está.

Código PHP :

<?php
class Saluda{
  public function diHola(){
     $FUNCTION = array();
     $FUNCTION[0]  = "hola";
     call_user_func($this,$FUNCTION[0]);
   }
    public function hola(){
     echo "hola";
      }
}//end class
$saluda = new Saluda();
$saluda->diHola();
?>

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox
Citar            
MensajeEscrito el 11 Jun 2015 11:15 pm
Olvidaste meter el parámetro que le das a call_user_func como un array :)

Código PHP :

class Saluda{
    public function diHola(){
        $FUNCTION = array();
        $FUNCTION[0]  = "hola";
        call_user_func([$this,$FUNCTION[0]]);
    }
    public function hola(){
        echo "hola";
    }
}//end class
$saluda = new Saluda();
$saluda->diHola();



Y aqui la version xD mas compleja jejeje me puse a jugar para que veas más posibilidades

Código PHP :

class Saluda{

    public function diEsto($algo){
        call_user_func(array($this, 'decir'), $algo);
    }

    public function diCosas($palabras = array()){
        foreach($palabras as $palabra){
            call_user_func(array($this, 'decir'), $palabra);
        }
    }

    public static function decir($esto){
        echo $esto;
    }

    public function quehago($function, $palabra){
        call_user_func(array($this, $function), $palabra);
    }
}//end class
$saluda = new Saluda();
$saluda->diEsto("Hola");
$saluda->diCosas(["Hola", "Mundo", "Cruel"]);
$saluda->quehago('decir', "gomu Gomu NO Pistol");

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 17 Jun 2015 04:16 pm
Hola gracias delporfirio, al final como no quería perder más tiempo externalice las funciones y las convertí en clases externas para abstraer el código un poco.
pero vamos valla fallo, no te puede imaginar la de cosas que probé haciéndome cruces de porque no me funcionaba el código :cry: y resulta que había que pasar los valores dentro de un array, para pegarme jaja :lol:

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.