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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.