Code Igniter: llamar a un controlador desde consola o desde otro fichero.php

Si has trabajado con Code Igniter encontrarás este “truquillo” de mucha utilidad. Te permitirá llamar a un controlador desde consola o desde otro fichero PHP. Por ejemplo:

1) Supón que tienes una tarea (en un cron) que tiene que llamar a un controlador de tu aplicación Code Igniter. Supongamos que tienes un controlador que se llama ‘saludar’ y quieres llamar a la función ‘decir_hola’ de ese controlador. No puedes hacer la llamada así:

php /var/www/saludar/decir_hola

ni:

php /var/www/index.php/saludar/decir_hola

(pruébalo)

2) También es posible que necesites recibir parámetros $_GET pero, por ejemplo, no sabes en el orden en el que te los van a enviar.

En ambos casos puedes crear un fichero llamado, por ejemplo, redirigir.php con el contenido siguiente:

<?php
// Recoger parámetros o cualquier otra tarea previa que necesites antes de llamar al controlador
...
// Fin de tareas previas
 
$_SERVER['PATH_INFO']    = 'saludar/decir_hola';
 
require('index.php');
?>

o incluso, podemos pasarle parámetros desde la consola:

<?php
$_SERVER['PATH_INFO']    = $argv[1];
require('index.php');
?>

(Si usas el fichero .htaccess no olvides añadir este fichero redirigir.php para que se pueda ejecutar).

Deja un comentario