Foros del Web » Programando para Internet » PHP »

Guardar Contenido Funcion a una variable

Estas en el tema de Guardar Contenido Funcion a una variable en el foro de PHP en Foros del Web. Hola, Creo el título del tema lo dice todo. Quería saber si existe un equivalente para guardar una función en una variable y que esta ...
  #1 (permalink)  
Antiguo 13/08/2015, 14:08
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Guardar Contenido Funcion a una variable

Hola,
Creo el título del tema lo dice todo.

Quería saber si existe un equivalente para guardar una función en una variable y que esta puede ser ejecutada más adelante a través de la variable.

En javascript lo hago de la siguiente manera.

Código Javascript:
Ver original
  1. var objData={
  2.     'fProcesofinal':function(){
  3.        alert('Hola');
  4.     }
  5. }
  6. objData.fProcesoFinal();//Ejecuta la función

Necesito esto porque quisiera ejecutar otros procesos al momento de producirse algún error en una de mis funciones php que lo tengo dentro de una clase.
Código PHP:
Ver original
  1. function fResult($sQuery="",$fProcesoFinal=""){
  2.         $result=mysqli_query($this->p_lnkMySQL,$sQuery);
  3.         if(!$result){
  4.             $sErr="MYSQL_ERR.- ".(mysqli_error($this->p_lnkMySQL));
  5.             $fProcesoFinal();//AQUI DEBERÍA EJECUTARSE
  6.             mysqli_close($this->p_lnkMySQL);
  7.             die($sErr);
  8.         }
  9.         return $result;
  10.     }

Gracias!.
  #2 (permalink)  
Antiguo 13/08/2015, 16:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Guardar Contenido Funcion a una variable

Puedes crear una clase y la función pasaría a ser un método que luego ejecutarías, algo similar al uso de objetos y métodos de JS.

Código PHP:
Ver original
  1. class Foo{
  2.     public static function bar(){
  3.         echo 'Este es un método estático de la clase Foo';
  4.     }
  5.  
  6.     public function baz(){
  7.         echo 'Este no es un método estático de la clase Foo';
  8.     }
  9. }
  10.  
  11. Foo::bar(); //Ejecuta el método "bar" (Esta forma solo es válida para método estáticos)
  12.  
  13. $instancia = new Foo();
  14. $instancia->baz(); //Ejecuta el método "baz"
  15. $instancia->bar(); //Ejecuta el método "bar"

Aunque no sé por qué prefieres hacerlo así si para ejecutar una función previamente declarada, basta con que la invoques por su nombre.

Código PHP:
Ver original
  1. function ejemplo(){
  2.     #Do stuff
  3. }
  4.  
  5. #5000 líneas de código después...
  6.  
  7. ejemplo(); #Se ejecuta normalmente.

Incluso puedes tenerla en otro archivo y tan solo tendrías que incluir dicho archivo e invocar a la función.

Código PHP:
Ver original
  1. include_once 'funciones.php';
  2.  
  3. ejemplo();

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 13/08/2015 a las 16:17 Razón: Ejemplo
  #3 (permalink)  
Antiguo 14/08/2015, 08:27
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Respuesta: Guardar Contenido Funcion a una variable

Cita:
Iniciado por Alexis88 Ver Mensaje
Puedes crear una clase y la función pasaría a ser un método que luego ejecutarías, algo similar al uso de objetos y métodos de JS.

Código PHP:
Ver original
  1. class Foo{
  2.     public static function bar(){
  3.         echo 'Este es un método estático de la clase Foo';
  4.     }
  5.  
  6.     public function baz(){
  7.         echo 'Este no es un método estático de la clase Foo';
  8.     }
  9. }
  10.  
  11. Foo::bar(); //Ejecuta el método "bar" (Esta forma solo es válida para método estáticos)
  12.  
  13. $instancia = new Foo();
  14. $instancia->baz(); //Ejecuta el método "baz"
  15. $instancia->bar(); //Ejecuta el método "bar"

Aunque no sé por qué prefieres hacerlo así si para ejecutar una función previamente declarada, basta con que la invoques por su nombre.

Código PHP:
Ver original
  1. function ejemplo(){
  2.     #Do stuff
  3. }
  4.  
  5. #5000 líneas de código después...
  6.  
  7. ejemplo(); #Se ejecuta normalmente.

Incluso puedes tenerla en otro archivo y tan solo tendrías que incluir dicho archivo e invocar a la función.

Código PHP:
Ver original
  1. include_once 'funciones.php';
  2.  
  3. ejemplo();

Saludos
Gracias por responder, el tema es que el contenido de la función es dinámica (no siempre tendrá el mismo contenido).

Por otro lado, lo más cercano que he podido hacer es como tú dices crear una función y usar su mismo nombre como parámetro para ejecutarse en el método final que esta en mi clase, el único problema es que tendría que definir todas las funciones que voy a necesitar para que luego sea ejecutada a través del método que esta en mi clase.

En el caso de javascript no se define la función (no tiene nombre) y trabaja como una función privada en cambio en php sería una función publica al menos dentro del archivo donde se ubica.

De momento voy a trabajar definiendo las funciones y las ejecutaré desde mi clase.

Gracias!!.

Última edición por oggy_15_3; 14/08/2015 a las 08:39
  #4 (permalink)  
Antiguo 14/08/2015, 09:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Guardar Contenido Funcion a una variable

Cita:
Iniciado por oggy_15_3 Ver Mensaje
el contenido de la función es dinámica (no siempre tendrá el mismo contenido).
Recuerda que existe el polimorfismo.
Código PHP:
Ver original
  1. class Padre{
  2.     function metodo(){
  3.         echo 'Esta es la clase Padre';
  4.     }
  5. }
  6.  
  7. class Hijo extends Padre{
  8.     function metodo(){
  9.         echo 'Esta es la clase Hijo';
  10.     }
  11. }
  12.  
  13. $instancia = new Hijo();
  14. $instancia->metodo(); //Imprimirá: "Esta es la clase Hijo"

También toma en cuenta que en PHP ya se admite el uso de funciones anónimas, tal como en JavaScript.

Código PHP:
Ver original
  1. function foo($bar){
  2.     return $bar('Hola');
  3. }
  4.  
  5. $fn = function($param){
  6.     echo $param;
  7. };
  8.  
  9. foo($fn); //Imprimirá: "Hola"
  10. $fn('Mundo'); //Imprimirá: "Mundo"

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 14/08/2015 a las 10:06 Razón: Ejemplo

Etiquetas: contenido, funcion, mysql, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.