En 2007, cuando PHP 5 todavÃa no era el estándar dominante y la mayorÃa de proyectos seguÃan en PHP 4, apareció Kohana. Era un fork de CodeIgniter, el framework de EllisLab que por aquel entonces gozaba de enorme popularidad por su curva de aprendizaje suave y su documentación impecable. Pero CodeIgniter tenÃa un problema: lo controlaba una empresa, seguÃa soportando PHP 4 y avanzaba despacio.
Un grupo de desarrolladores decidió tomar el código, darle un giro orientado a PHP 5 puro y gestionarlo de forma comunitaria. Asà nació Kohana. Ligero, rápido, sin dependencias externas y con una arquitectura MVC que cualquier usuario de CodeIgniter reconocerÃa al instante.
Qué lo diferenciaba de CodeIgniter
Kohana no era un reemplazo directo de CodeIgniter; era la respuesta a sus limitaciones más discutidas en esa época. Las diferencias más relevantes:
- PHP 5 obligatorio: nada de compatibilidad con PHP 4. Eso significaba clases reales, herencia, interfaces y acceso a todo lo que PHP 5 ofrecÃa frente al PHP procedimental de los años anteriores.
- Herencia en cascada: controladores, librerÃas, helpers y vistas podÃan cargarse desde la aplicación, desde el sistema o desde módulos instalados. Las opciones de configuración se heredaban y podÃan sobreescribirse en cada nivel sin tocar el núcleo.
- Sin conflictos de nomenclatura: las clases usaban sufijos explÃcitos (
_Controller,_Model) para evitar colisiones con librerÃas de terceros, algo que en CodeIgniter podÃa ser un quebradero de cabeza en proyectos grandes. - Helpers como clases estáticas: en lugar de funciones sueltas, Kohana agrupaba los helpers en clases. En vez de
form_open(), se escribÃaForm::open(). Más ordenado y más fácil de extender. - Carga automática de clases: librerÃas, modelos y helpers se cargaban al vuelo cuando se necesitaban, sin precargarlos al inicio de cada petición.
- Sistema de eventos: los eventos podÃan añadirse, modificarse o eliminarse en tiempo de ejecución, lo que permitÃa alterar el comportamiento del framework sin parchear el núcleo.
- GET, POST, COOKIE y SESSION sin restricciones: CodeIgniter limitaba el acceso a
$_GETpor defecto; Kohana los trataba todos igual, con el mismo filtrado XSS disponible. - Gestión comunitaria: sin una empresa detrás que marcara los tiempos, las decisiones se tomaban en abierto y los parches llegaban más rápido.
Un controlador básico en Kohana
La estructura de un controlador en Kohana era reconocible para cualquiera que viniese de CodeIgniter, aunque con la sintaxis más limpia que permitÃa PHP 5:
class Welcome_Controller extends Controller {
public function index()
{
// Cargar una vista
$view = new View('welcome');
$view->title = 'Hola desde Kohana';
$view->render(TRUE);
}
public function usuario($id)
{
// Acceder a parámetros GET
$formato = Input::get('formato', 'html');
$modelo = new Usuario_Model();
$datos = $modelo->obtener($id);
$view = new View('usuario');
$view->datos = $datos;
$view->formato = $formato;
$view->render(TRUE);
}
}
Los modelos extendÃan de Model y tenÃan acceso directo al query builder de la base de datos. La carga de librerÃas se hacÃa con $this->load->library('nombre'), igual que en CodeIgniter, aunque Kohana también permitÃa instanciarlas directamente gracias al autoloader.
Evolución y fin del proyecto
Kohana tuvo su momento de mayor actividad entre 2008 y 2012. La versión 3.x supuso una reescritura importante que lo hizo aún más modular, con un sistema de módulos más flexible y una separación más clara entre el núcleo y la aplicación. En esos años compitió de tú a tú con otros frameworks PHP populares como CakePHP, Symfony o el propio CodeIgniter.
El problema llegó con la irrupción de Laravel a partir de 2012. Laravel tomó muchas de las ideas que Kohana habÃa popularizado (composición por módulos, herencia en cascada, helpers organizados en clases) y las combinó con una sintaxis más moderna, Composer como gestor de dependencias y una comunidad que creció de forma exponencial. Kohana no pudo competir.
El proyecto quedó prácticamente abandonado alrededor de 2016. La última versión estable fue la 3.3.6. El repositorio oficial en GitHub lleva años sin actividad significativa y el dominio kohanaphp.com ya no está operativo.
¿Para qué sirve recordarlo hoy?
Kohana no es un framework que vayas a usar en un proyecto nuevo. Pero su historia tiene valor para entender cómo evolucionó el ecosistema PHP: la transición de PHP 4 a PHP 5, el debate entre el control corporativo y la gestión comunitaria del software libre, y cómo las decisiones de diseño que tomaron sus autores en 2007 acabaron influyendo en frameworks que sà siguen activos hoy.
Si trabajas con CodeIgniter, Laravel o cualquier framework PHP moderno, parte del vocabulario que usas (módulos, cascada de configuración, helpers como clases) tiene raÃces directas en lo que Kohana estableció.
Imagen: Pexels / Pixabay
