Agregar functionalidad namespace a Codeigniter 2.1.3 (Sólo controlador)

Hace unos días estoy peleando con CodeIgniter (a partir de ahora CI), para implementar la funcionalidad de namespaces disponible desde PHP 5.3.0+.
Encontré un snippet de código con el cual lograrlo, pero solo para agregar espacios de nombres a tus controladores (carpeta controllers).

Para realizar esta tarea debemos seguir los siguientes pasos:

Abrir Codigniter.php, que se encuentra el la carpeta system, y agregar las siguientes líneas:
[PHP]
$_ns = ”;
[/PHP]
Tiene que ser justo antes de:
[PHP]
include(APPPATH.’controllers/’.$RTR->fetch_directory().$RTR->fetch_class().’.php’);
[/PHP]
y luego modificamos la línea:
[PHP]
$class = $RTR->fetch_class();
[/PHP]
por:
[PHP]
$class = $_ns . ‘\’ . $RTR->fetch_class();
[/PHP]

Ya esta…

Para utilizar esta funcionalidad, tenemos que agregar a la clase de nuestro controlador el nombre del namespace a la variable $_ns. Aquí un ejemplo:

[PHP]
namespace Controllers;

defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);

class Job extends CI_Controller
{
public function getJobs()
{
return;
}
}
$_ns = __NAMESPACE__;
[/PHP]

Posibles problemas

Presta atención a que el namespace es la primera línea de código del fichero. También la clase nativa de CI tiene un slash, que indica el root de namespaces. Y sobre todo, que al final de la clase, esta nuestra variable con el nombre del namespace.