Volver a la página principal
lunes 10 febrero 2025
3

Orden recomendado para escribir métodos en un controlador y un modelo en CodeIgniter

En CodeIgniter (tanto en la versión 3 como en la 4), mantener un orden estructurado de los métodos en controladores y modelos facilita la legibilidad y mantenimiento del código. Aunque no hay una regla estricta, se recomienda seguir una estructura lógica y coherente.

Orden recomendado en un Controlador (Controller)

El controlador en CodeIgniter gestiona las solicitudes HTTP y la lógica de la aplicación. Un orden estándar para los métodos es el siguiente:

1. Constructor (__construct()) → Inicialización del controlador.

2. Métodos de carga de vistas (index, show, etc.) → Métodos públicos para mostrar datos.

3. Métodos CRUD (Create, Read, Update, Delete).

4. Métodos auxiliares o privados → Métodos internos de apoyo.

Ejemplo de un controlador ordenado (Usuarios.php)

class Usuarios extends CI_Controller {
    
    public function __construct() {
        parent::__construct();
        $this->load->model('Usuario_model'); // Cargar el modelo
    }

    // 1. Método principal (vista principal)
    public function index() {
        $data['usuarios'] = $this->Usuario_model->obtener_usuarios();
        $this->load->view('usuarios/index', $data);
    }

    // 2. Mostrar un usuario específico
    public function mostrar($id) {
        $data['usuario'] = $this->Usuario_model->obtener_usuario($id);
        $this->load->view('usuarios/mostrar', $data);
    }

    // 3. Crear un nuevo usuario
    public function crear() {
        $this->load->view('usuarios/crear');
    }

    public function guardar() {
        $datos = array(
            'nombre' => $this->input->post('nombre'),
            'email' => $this->input->post('email')
        );
        $this->Usuario_model->insertar_usuario($datos);
        redirect('usuarios');
    }

    // 4. Editar un usuario
    public function editar($id) {
        $data['usuario'] = $this->Usuario_model->obtener_usuario($id);
        $this->load->view('usuarios/editar', $data);
    }

    public function actualizar($id) {
        $datos = array(
            'nombre' => $this->input->post('nombre'),
            'email' => $this->input->post('email')
        );
        $this->Usuario_model->actualizar_usuario($id, $datos);
        redirect('usuarios');
    }

    // 5. Eliminar un usuario
    public function eliminar($id) {
        $this->Usuario_model->eliminar_usuario($id);
        redirect('usuarios');
    }

    // 6. Métodos auxiliares o privados
    private function verificar_sesion() {
        if (!$this->session->userdata('logueado')) {
            redirect('login');
        }
    }
}

Orden recomendado en un Modelo (Model)

El modelo se encarga de la lógica de base de datos. Un orden recomendado es:

1. Constructor (__construct()) → Carga de la base de datos.

2. Métodos de obtención de datos (GET).

3. Métodos de inserción (INSERT).

4. Métodos de actualización (UPDATE).

5. Métodos de eliminación (DELETE).

6. Métodos auxiliares (consultas avanzadas, cálculos, etc.).

Ejemplo de un modelo ordenado (Usuario_model.php)

class Usuario_model extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->database(); // Cargar base de datos
    }

    // 1. Obtener todos los usuarios
    public function obtener_usuarios() {
        return $this->db->get('usuarios')->result_array();
    }

    // 2. Obtener un usuario por ID
    public function obtener_usuario($id) {
        return $this->db->get_where('usuarios', array('id' => $id))->row_array();
    }

    // 3. Insertar un usuario
    public function insertar_usuario($datos) {
        return $this->db->insert('usuarios', $datos);
    }

    // 4. Actualizar un usuario
    public function actualizar_usuario($id, $datos) {
        $this->db->where('id', $id);
        return $this->db->update('usuarios', $datos);
    }

    // 5. Eliminar un usuario
    public function eliminar_usuario($id) {
        return $this->db->delete('usuarios', array('id' => $id));
    }

    // 6. Métodos auxiliares
    public function contar_usuarios() {
        return $this->db->count_all('usuarios');
    }
}

Conclusión

Mantener un orden lógico en controladores y modelos en CodeIgniter mejora la legibilidad y el mantenimiento del código. En general:

📌 Controladores (Controller)

✅ Constructor

✅ Métodos de carga de vistas (index(), show())

✅ Métodos CRUD (crear(), guardar(), editar(), actualizar(), eliminar())

✅ Métodos auxiliares o privados

📌 Modelos (Model)

✅ Constructor

✅ Métodos GET (obtener registros)

✅ Métodos INSERT (crear registros)

✅ Métodos UPDATE (modificar registros)

✅ Métodos DELETE (eliminar registros)

✅ Métodos auxiliares

Este orden no es obligatorio, pero sigue las buenas prácticas de desarrollo en CodeIgniter. 🚀

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer