Hero

Funciones variables PHP

Abril 25, 2013

kenneth
PHP
Programación

Cuando trabajamos en PHP y debemos ejecutar una o mas funciones de una manera dinámica podemos optar por hacer el llamado de estas funciones por medio de una variable, de esta manera podemos obtener un código mas escalable y flexible para el futuro.

Suponiendo que en nuestro caso, necesitamos adjuntar dos archivos, uno javascript (*.js) y el otro una hoja de estilo en cascada (*.css), utilizaremos las funciones de Drupal para dicho fin, drupal_add_js para adjuntar javascript y drupal_add_css para adjuntar hojas de estilos.

En nuestro modulo personalizado creamos ambos archivos ( modulo_personalizado.js - modulo_personalizado.css ), y se agregaran en la raíz de nuestro modulo, ahora para adjuntarlos en alguna pagina podríamos usar la recomendación que existe en el articulo: ”Como agregar archivos javascript en una página especifica con Drupal 7”, sin embargo para efectos de mostrar como llamar una función por medio de una variable, lo implementaremos utilizando el hook_form_FORM_ID_alter de la siguiente manera:

<pre title="Llamar funciones por medio de una variable">function modulo_personalizado_form_FORM_ID_alter(&$form, &$form_state) {
 
 foreach (array('css', 'js') as $tipo) {
        $path = drupal_get_path('module', 'modulo_personalizado') . "modulo_personalizado.$tipo";
        if (file_exists($path)) {
            $function = "drupal_add_$tipo";
            if (function_exists($function)) {
                $function($path);
            }
        }
    }
 
} 

En la linea # 4 creamos la variable llamada $function, la cual tendrá el valor “drupal_add_js” o “drupal_add_css” dependiendo del valor que tenga la variable $tipo, la cual se utiliza en el “foreach”.

Una vez definida nuestra variable lo que debemos hacer es utilizar la función PHP llamada function_exists, que revisa si el nombre de función pasada por parámetro esta en la lista de funciones definidas.

Una vez que estamos seguros que la función existe, entonces hacemos el llamado a la función por medio de la variable como si fuese el mismo nombre de función, este llamado lo podemos ver en la linea 6.

Espero que les sirva de ayuda.

Saludos,

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.