CodeIgniter: MVC

CodeIgniter es un framework para PHP pensado para ofrecer un alto rendimiento, además es bastante ligero y fácilmente configurable.

Hay muchos frameworks para PHP y este podría pasar por una alternativa más, pero si la aplicación que desarrollas requiere de una plataforma que no marque mucho la aplicación y que necesite un alto rendimiento creo que CodeIgniter debería ser tu elección.

Cumple perfectamente el fin de cualquier framework.. una estructura definida que de soporte a un proyecto web y ayude a que este proyecto sea organizado y desarrollado.

La documentación de CodeIgniter es excelente y esto facilita en gran medida su aprendizaje.

Modelos

Los modelos son las clases PHP que son creadas para interactuar con la base de datos, por ejemplo una clase que gestionará las funciones de insercción, selección y actualización de datos para la tabla “blogs” en nuestra aplicación podría ser:

class Blogmodel extends Model

{

var $title   = ”;

var $content = ”;

var $date    = ”;

 

function Blogmodel()

{

// LLamamos al constructor

parent::Model();

}

 

function get_last_ten_entries()

{

$query = $this->db->get(‘entries’, 10);

return $query->result();

}

 

function insert_entry()

{

$this->title   = $_POST[‘title’];

$this->content = $_POST[‘content’];

$this->date    = time();

 

$this->db->insert(‘entries’, $this);

}

 

function update_entry()

{

$this->title   = $_POST[‘title’];

$this->content = $_POST[‘content’];

$this->date    = time();

 

$this->db->update(‘entries’, $this, array(‘id’, $_POST[‘id’]));

}

}

Si queremos que el modelo cargue una función para autoconectar a la base de datos por defecto podemos pasarle el parametro TRUE.

$this->load->model(‘Model_name’, ”, TRUE);

También podemos pasarle como parámetro una configuración personalizada para la conexión a la base de datos de esta manera:

$config[‘hostname’] = “localhost”;

$config[‘username’] = “myusername”;

$config[‘password’] = “mypassword”;

$config[‘database’] = “mydatabase”;

$config[‘dbdriver’] = “mysql”;

$config[‘dbprefix’] = “”;

$config[‘pconnect’] = FALSE;

$config[‘db_debug’] = TRUE;

$config[‘active_r’] = TRUE;

 

$this->load->model(‘Model_name’, ”, $config);

 

Vistas

Un vista simplemente es una página, o un fragmento de página (cabecera, pie, barra lateral). De hecho, las vistas son más versátiles y flexibles si se utilizan unas embebidas dentro de otras.

Las vistas nunca son llamadas directamente y tienen que ser cargadas con un controlador, el controlador es el que se encarga de realizar la distribución de las diferentes acciones por eso es el responsable de la carga de las diferentes vistas.

Un ejemplo de vista por lo tanto podría ser:

<html>
<head>
<title>Mi noticias</title>
</head>
<body>
<h1>Bienvenido a mi noticias!</h1>
</body>
</html>

El ejemplo debería estar almacenado en la carpeta “/system/application/views” y con extension “php” por ejemplo: news_view.php.

Para mostrar por pantalla la vista que hemos creado tendríamos que realizar la llamada en el controlador:

<?php
class Noticias extends Controller
{
        function index()
        {
               $this->load->view('noticias');
        }
}
?>

Si lo que buscamos es añadir algo de contenido dinámico a las vistas tendremos que hacer algo parecido a:

$data = array(
               'titulo' => 'Mi titulo',
               'cabecera' => 'Mi cabecera',
               'mensaje' => 'Mi Mensaje'
          );
$this->load->view('noticias', $data);

Para mostrar estos datos de manera dinámica podrías hacer algo así:

<html>
<head>
<title><?=$title;?></title>
</head>
<body>
<h1><?=$heading;?></h1>
<h3>My Todo List</h3>
<ul>
<?php foreach($todo_list as $item):?>
<li><?=$item;?></li>
<?php endforeach;?>
</ul>
</body>
</html>

Controladores

Un controlador es simplemente un archivo que es llamado cada vez que la URL a la que va asociado es invocada.

Tomemos como ejemplo la siguiente URL:

www.tusitio.com/noticias/

Para este ejemplo tendremos un fichero llamadao noticias.php dentro de “controllers” y un ejemplo básico de su código sería:

<?php
class Noticias extends Controller {
        function index()
        {
               echo 'Hola Mundo!';
        }
}
?>

Un ejemplo más avanzado sería pasándole un segundo parámetro a la URL, por ejemplo:

www.tusitio.com/noticias/ver

En este caso el segundo parámetro sería una llamada a una función, en código tendríamos algo del tipo:

<?php
class Blog extends Controller {
        function index()
        {
               echo 'Hola Mundo!';
        }
        function ver()
        {
               echo 'Ver noticias';
        }
}
?>

Ejemplo de uso

Para aquellos que ya hayan comenzado a utilizarlo aquí van algunas soluciones a problemas comunes con los que te puedes llegar a encontrar.

Urls Limpias

Para poder utilizar CodeIgniter con Urls amigables necesitaremos crear un .htaccess con la siguiente configuración:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin
    ErrorDocument 404 /index.php
</IfModule>

Idioma español

Para poder trabajar con diferentes idiomas que nos faciliten la traducción de cadenas en el sitio debemos crear una carpeta (“spanish”) dentro de “languages” de este modo podremos manejar diferentes cadenas traducidas y establecer por defecto el idioma que más nos convenga.

Configuración de la base de datos

Para interactuar con la base de datos tendremos que añadir los datos de conexión en “/system/application/config/database.php”.

Scaffolding

El scaffolding es un método para construir aplicaciones basadas en bases de datos, esta técnica está soportada por algunos frameworks caso de CodeIgniter (tipo MVC), en el cuál el programador escribe una especificación que describe cómo debe ser usada la base de datos.

Luego el compilador utiliza esa especificación para generar el código que la aplicación usará para crear, leer, actualizar y eliminar registros de la base de datos, esto es conocido cómo CRUD (create, read, update, delete).

Para utilizarlo en CodeIgniter necesitamos una “palabra secreta” que podemos modificar en “/system/apliccation/routes/config.php”.

Librería avanzada para cache

Sparks es una librería que nos permite solventar dos deficiencias con las que nos podemos encontrar a la hora de afrontar un proyecto basado en CodeIgniter.

1. Mejora la cache que únicamente permite cachear páginas completas.
2. Podremos incluir “vistas” dentro de “vistas”.

1) Fine grained cacheablity. Caching in CI is an all or nothing affair. Sparks gives you the ability to divide your PHP blocks into those that are cacheable and those that are not. For example: Many sites display “You are logged in as XXX” in teh top corner. This username must be regenerated for each view (from the session data), however the rest of the page may be cacheable.

2) Including views within views (parts). Also automatically wrap view files in “wrapper templates”.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *