Nov
30
2011

Codeigniter for the absolute beginner.CodeIgniter para el principiante.


Codeigniter for the absolute beginner.

I have seen in some forums and different websites, some doubts about how codeigniter is organized and how can it help you as a coder be more efficient. The first thing people should know is, codeigniter is a PHP framework, made with the software architecture known as MVC which stands for Model-View-Controller. This architecture seperates the logic from user interface allowing independant development, testing and better maintenance. Codeigniter allows you to have your code much organized, making you look better at what you already do. This framework is made to facilitate the way you do certain things in PHP, and allow you to reuse your code, using PHP Object Oriented programming paradigm. Codeigniter, on my opinion, seems to be very user friendly, so it’s to which I would recommend the use of it, for any upcoming web developer.

How to install Codeigniter

Some people start to doubt about the use of codeigniter when they hear or read the word ‘install’. In this case, you shouldn’t, the install process for codeigniter is farily simple, since all you need to do is, download the framework from their website, which can be found here: http://codeigniter.com/

Direct download is here: Latest Version

Next, after you have downloaded the files, just extract the content and place them into your root folder. That’s it! You can also rename your folder as you wish, so I suggest giving it a relevant name.

Config File

This config file can be found in root folder -> application -> config -> config.php. For this post and simple example, all we would need to do is change one line of code:

[php]
$config['base_url'] = 'http://localhost/ci_basics';
?>
[/php]

In my case, I have put my base_url as localhost/ci_basics. This tells codeigniter that the files for this project are in the folder named ci_basics. This should be all for now, since this example is very simple, and it’s just to let all of us know how simple codeigniter can be.

Routes File

The next thing that we should change is our routes file. This file can also be found in the same path as our config file, root folder -> application -> config -> routes.php. In this file, we would change our default_controller. Since we are going to name our first page ‘home’, and also, name our first controller home, then we can tell codeigniter where to look first.

[php]
$route['default_controller'] = 'home';
?>
[/php]

That’s enough configuration for today. Now let’s create our home controller. Controllers are just PHP classes that are within the folder controller. Each class should have the same name as it’s file. Also, each class will extend from codeigniter’s main controller. Let’s see how.

File name home.php
[php]
// This file name is home.php
// The class name for this file should be the same
// filename, except it should be capitalized.

class Home extends CI_Controller{

}
?>
[/php]

In object oriented programming, the classes are made up of functions(methods in other languages). One can be a class construct. This construct will run everytime the class is called, or instantiated. In PHP, the way to declare a contruct has changed. For those of you who are new to this, then you might not notice the change, but for those of use who have been around for a while, will see that, PHP used to call class construct functions with the same name as the class. With PHP 5+, we now have another way of doing this. We would call the construct like this.

Update: As mentioned in a comment below from Tobz, in order to reach the parent constructor, you need to specify it in the code. (This slipped from me). If you do not add this line of code, you will get errors.

[php]
// This file name is home.php
// The class name for this file should be the same
// filename, except it should be capitalized.

class Home extends CI_Controller{

function __construct(){
// Note that there are (2) underscores (_)
parent::__construct(); // Should always be the first thing you call.
}
}
?>
[/php]

As mentioned above, this construct will execute everytime this class is instantiated. Constructs are good to have, to give initial values to variables. Let’s create a variable date, and give the value of today’s date.

[php]
// This file name is home.php
// The class name for this file should be the same
// filename, except it should be capitalized.

class Home extends CI_Controller{

var $today;
function __construct(){
// Note that there are (2) underscores (_)
// To grab the class variable, (this) needs to be used
parent::__construct();
$this->today = date(‘d/m/Y’);
}
}
?>
[/php]

Before we start displaying anything on the browser, I would like to recommend an organized structure for your files. In many cases, we will be using a CSS file, or a javascript file for all our pages. In this case, we can make a header file, a footer file, and files with main content.

First create a folder named includes. This folder should reside inside of: application -> views -> includes. Within this folder, create 2 files. One called header.php, and the other footer.php. The header file should look something like this:

Filename: header.php
[php]




[/php]

Notice it has an open body tag, but no finishing. This tag should be finished in the footer file.

Filename: footer.php
[php]


[/php]

For now, we can leave this as is. Let’s go back to our controller, and let us show the page to the user. Within the controller, we would need to call the ‘view’ function to display the content of the main content file to the browser. Let’s create an index function, and send the variable of today to the view, and display todays’ date to the user. Also, we will call another file that is within the includes folder called template. This template file will load the header, the content, and then the footer, and display it in the browser. We will create an array named $data. This will be an associative array, with data that will tell the template file, which content to load, and also, send in the variable of todays date. Once inside the view, this array is converted to variables. Let’s see how.

[php]
// This file name is home.php
// The class name for this file should be the same
// filename, except it should be capitalized.

class Home extends CI_Controller{

var $today;
function __construct(){
// Note that there are (2) underscores (_)
// To grab the class variable, (this) needs to be used
parent::__construct();
$this->today = date(‘d/m/Y’);
}

function index(){
// Create an array with the information that we need to send.
// First is the main content to display
$data['main_content'] = ‘home_view’;
// Next we send the date variable
$data['today'] = $this->today;

// Now that we have our information
// We will load the template.
// And send the array
$this->load->view(‘includes/template’, $data);
}
}
?>
[/php]

Inside the includes folder, we need to add a new file named template.php
Filename: template.php
[php]
// Here we load the header
// the content, and the footer
$this->load->view(‘includes/header’);
// We need to load the content file
$this->load->view($main_content); // This is the name we sent in $data['main_content']
// Now we load the footer
$this->load->view(‘includes/footer’);
?>
[/php]

Notice, how we load each view file without the extension of .php. Codeigniter will automatically look for a file with that name and give it the proper extension. (They should have .php extension though).

Now, let’s create our content file, which should go in our views folder. Within this file, we can access the variable $today, since it was sent through our $data array. This file can be as simple as the following example.

Filename: home_view.php
[php]

echo "Today's date is: ";
echo $today;
?>

[/php]

And there you have it (Codeigniter for the absolute beginner). This is technically the most basic codeigniter can get for anyone trying to step into this framework world. Hope you all enjoy, and remember, feedbacks are always welcome.

CodeIgniter para el principiante.

He visto en algunos foros y en diferentes sitios web, algunas dudas acerca de cómo CodeIgniter está organizado y cómo puede ayudarle a usted como programador ser más eficiente. La primera cosa que debe saber es, CodeIgniter es un framework PHP, hecho con la arquitectura de software conocido como MVC que significa Modelo-Vista-Controlador. Esta arquitectura separa la lógica de la interfaz del usuario, que permite el desarrollo de pruebas independientes, y un mejor mantenimiento. CodeIgniter le permite tener su código mucho más organizada, haciendo que te veas mejor en lo que ya sabes hacer bien. Este marco tiene por objetivo facilitar la forma de hacer ciertas cosas en PHP, y le permitirá reutilizar el código, utilizando el paradigma de programación orientado a objetos. CodeIgniter, en mi opinión, parece ser muy fácil de usar, así que yo recomiendo el uso de la misma, para cualquier desarrollador web.

Como instalar Codeigniter

Algunas personas comienzan a dudar sobre el uso de CodeIgniter cuando oye o lee la palabra “instalar”. En este caso, el proceso de instalación de CodeIgniter es simple, ya que todo lo que necesitas hacer es descargar el marco de su sitio web, que se puede encontrar aquí: http://codeigniter.com/

Descarga directa está aquí: Ultima Versión

A continuación, después de haber descargado los archivos, simplemente extrae el contenido y colocalos en la carpeta raíz(root folder). Eso es todo! También se debe cambiar el nombre de la carpeta al nombre que desee, por lo que sugiero darle un nombre relevante a su proyecto.

Archivo Config

Este archivo de configuración se pueden encontrar en la carpeta raíz – application -> config -> config.php. Ya que esto es un ejemplos simple lo que haremos hoy, todo lo que tendría que hacer es cambiar una línea de código:

[php]
$config['base_url'] = 'http://localhost/ci_basics';
?>
[/php]

En mi caso, he puesto mi base_url como localhost/ci_basics. Esto le dice a CodeIgniter que los archivos de este proyecto se encuentran en la carpeta con el nombre ci_basics. Esto debe ser todo por ahora, ya que este ejemplo es muy simple, y es sólo para que todos sepamios que tan simple es CodeIgniter.

Archivo Routes

La siguiente cosa que debemos cambiar es nuestro archivo de rutas. Este archivo también se puede encontrar en el mismo camino que nuestra carpeta del archivo de configuración, -> application -> config -> routes.php. En este archivo, se debe cambiar el default_controller. Llamaremos nuestro controller “home” que sería nuestra primera página, y esto es para decirle a CodeIgniter dónde mirar primero.

[php]
$route['default_controller'] = 'home';
?>
[/php]

Eso es toda la configuración por hoy. Ahora vamos a crear nuestro controlador de “home”. Los controladores son clases PHP que están dentro de la carpeta de “controller”. Cada clase debe tener el mismo nombre del archivo. Además, cada clase se extenderá desde el controlador principal de CodeIgniter. Vamos a ver cómo.

Nombre del archivo: home.php
[php]
// Nombre del archivo es home.php
// Nombre de la clase debe ser el mismo
// pero debe tener la primera letra
// mayúscula.

class Home extends CI_Controller{

}
?>
[/php]

En la programación orientada a objetos, las clases se componen de funciones (métodos en otros idiomas). Tambien existe el constructor de la clase. Este constructor se ejecutará cada vez que la clase es instanciada. En PHP, la forma de declarar un contructor ha cambiado. Para aquellos de ustedes que son nuevos en esto, es posible que no noten el cambio, pero para aquellos que han estado programando en PHP por un tiempo, verá que, antes se utilizaba el mismo nombre de la clase. Ahora con PHP 5 +, tenemos otra forma de hacer esto. La llamada se hace de la siguiente manera.

Actualización: Como se mencionó en un comentario más abajo de Tobz, con el fin de alcanzar el constructor padre, usted tiene que especificarlo en el código. (Se me olvidó por completo mencionar este detalle). Si no se agrega esta línea de código, se producirán errores.

[php]
// Nombre del archivo es home.php
// Nombre de la clase debe ser el mismo
// pero debe tener la primera letra
// mayúscula.

class Home extends CI_Controller{

function __construct(){
// Note que hay (2) underscores (_)
parent::__construct();
}
}
?>
[/php]

Como se mencionó anteriormente, este constructor se ejecutará cada vez que esta clase es instanciada. Constructores son bueno tenerlos, para dar valores iniciales a las variables. Vamos a crear una variable y darle la fecha de hoy.

[php]
// Nombre del archivo es home.php
// Nombre de la clase debe ser el mismo
// pero debe tener la primera letra
// mayúscula.

class Home extends CI_Controller{

var $today;
function __construct(){
// Note que hay (2) underscores (_)
// Se necesita utilizar (this) para poder
// referenciar la variable de la clase
parent::__construct();
$this->today = date(‘d/m/Y’);
}
}
?>
[/php]

Antes de empezar a mostrar información en el navegador, me gustaría recomendar una estructura organizada para sus archivos. En muchos casos, vamos a utilizar un archivo CSS, Javascript en tal vez todas nuestras páginas. En este caso, podemos hacer que un archivo de header, un archivo de footer de la página, y los archivos con el contenido principal.

Primero, cree una carpeta llamada includes. Esta carpeta debe residir en el interior de: application -> views -> includes. Dentro de esta carpeta, cree dos archivos. Uno llamado header.php y el footer.php. El archivo de cabecera debe ser algo como esto:

Nombre del archivo: header.php
[php]




[/php]

Nota como el tag de ‘body’ está abriendo, pero no se cierra. Esta etiqueta debe cerrarse en el archivo de footer.php

Nombre del archivo: footer.php
[php]


[/php]

Por ahora, podemos dejar esto como está. Volvamos a nuestro controller, y vamos a mostrar la página al usuario. En el controller, tendría que llamar a la funcion de “view” para mostrar el contenido del archivo de contenido principal para el navegador. Vamos a crear una función de índice, y enviar la variable de $today, para poder desplegar al usuario. Además, vamos a llamar a otro archivo que se encuentra dentro de la carpeta includes. Este archivo se va encargar de llamar el archivo de header.php, el contenido, y luego el footer.php, y lo mostrará en el navegador. Vamos a crear un array llamado $data. Esta será una matriz asociativa, con los datos que le dirá a la plantilla cual es el archivo que debe desplegar, y también, enviar la variable de la fecha de hoy. Una vez dentro del view, esta matriz se convierten en variables. Vamos a ver cómo.

[php]
// Nombre del archivo es home.php
// Nombre de la clase debe ser el mismo
// pero debe tener la primera letra
// mayúscula.

class Home extends CI_Controller{

var $today;
function __construct(){
// Note que hay (2) underscores (_)
// Se necesita utilizar (this) para poder
// referenciar la variable de la clase
parent::__construct();
$this->today = date(‘d/m/Y’);
}

function index(){
// Crear un array con información que se va enviar.
// Primero es el nombre del contenido
$data['main_content'] = ‘home_view’;
// Luego enviamos la variable de
// la fecha de hoy
$data['today'] = $this->today;

// Ahora que tenemos nuestra información
// Cargaremos el template
// Y enviar el array
$this->load->view(‘includes/template’, $data);
}
}
?>
[/php]

Dentro de la carpeta includes, tenemos que añadir un nuevo archivo llamado template.php
Nombre de archivo: template.php
[php]
// Aqui cargamos header.php
$this->load->view(‘includes/header’);
// Aqui se carga el contenido
$this->load->view($main_content); // Este es el nombre que se envio en $data['main_content']
// Ahora cargamos el footer.php
$this->load->view(‘includes/footer’);
?>
[/php]

Nota la forma en que se carga cada archivo sin la extensión. php. CodeIgniter buscará automáticamente un archivo con ese nombre y darle la extensión correcta. (Se debe tener la extensión en el archivo de php).

Ahora, vamos a crear nuestro archivo de contenido, que debe ir en nuestra carpeta de ‘views’. Dentro de este archivo, se puede acceder a la variable $today, ya que fue enviado a través de nuestros array, $data. Este archivo puede ser tan simple como el siguiente ejemplo.

Nombre del archivo: home_view.php
[php]

echo 'La fecha de hoy es: ';
echo $today;
?>

[/php]

Y ahí lo tienen. Esto es técnicamente el ejemplo más básico de CodeIgniter que se puede conseguir para cualquier persona que intente entrar en este mundo. Espero que todos disfruten, y recuerde, sugerencias siempre son bienvenidos.

Related Posts

About the Author: Jorge Torres

MS. Computer Science Codeigniter Web Developer

21 Comments+ Add Comment

  • Thank you, Yotorres,
    This is really very most basic about CodeIgniter. I tried Zend, Joomla, CakePHP, and Drupal but I think that CodeIgniter is the best option for someone who know PHP and writes code.
    I am jobless now, so if you need a web programmer I am here.
    Regards,
    Mato Cica

  • Hi jotorres,

    Thanks..it is gr8 post.

    I am biginner to codeigniter.

    Do u have captcha code to implement in any form. can plz share here or to my mail.

    thanks in advance,
    Judhisthira

  • [...] I already convinced you, then give it a try and start learning it. Jorge Torres put a nice intro for CodeIgniter beginners that I bet you guys would like to read. After you read that, dig into Net [...]

  • Nice article.
    One thing, you’ve left out the call to
    parent::__construct();
    at the start of your controller construct.
    People will run into problems without that.

  • Tobz! Thanks for that, I can’t believe I totally forgot. Honestly I don’t know why I forgot, but thanks, and I have fixed the post.

  • mister George!!!!
    Please recommend me a debugging tool for php.
    I havent done any research on it so i am going straight to the source.
    I am feeling lazy today :) ]

  • Hello there my friend, nice to see you around here! Debugging for PHP s a bit difficult as PHP does not have an internal debugger. There are exeternal debuggers though, at your disposal. There is the zend IDE which I think is the most commonly used. http://www.zend.com/en/products/studio/
    Another debuuger you might want to check out is DBG which can be found here:

    http://www.php-debugger.com/dbg/

    Lastly, you can try any of these 2 advanced debuggers for PHP:
    http://pecl.php.net/package/apd
    or
    http://xdebug.org/

    Hope that helps ney! Trust me, your gonna have fun.

  • graciassss por el tutorial, por fi pude instalar mi primera pagina en codeIgniter, gracias de peru !!!!

    • De nada amigo, cualquier duda o pregunta, la puedes hacer.

  • A great post Jo, for beginners I think it is a good starting point…

  • wow..it’s really great post for me coz i’m learner.

  • Its awesome for me because i am fresh with CodeIgniter. Thanks for this.

  • Nice one jo,i luv it coz am learning.
    But pls hw do we acces the view created from this tut on a browser ?

    • Hi Emeka, glad u liked the the post. In order to display the view on the browser, we go ahead and call the view function from the controller. Once we do this:

      [php]
      $this->load->view(‘includes/template’, $data);
      [/php]

      Then, all we need to do in the browser is write the following URL:
      [php]
      Http://yourdomain.com/index.php/controller/method
      [/php]

      That’s all there is to it.

  • Nice one..Thank You….

  • Thank you so much for your tutorials. They are extremely helpful to me. I am a beginner. Do you have any suggestions on how to go about developing on my pc and then deploying the code to the web server?

    • Well, you can always code, then upload via FTP, unless you know what GIT is. If you have time, I recommend learning GIT, makes you have organized code, backups and better than FTP.

  • i m start today to learn codeigniter . i know mvc structure .plz give me good reference site to learn ci…..

  • Thanks a lot! This is the first tutorial on the Internet which explained everything step by step.
    I read few tutorials out there but none explained all stuff one by one.

    I had big problem with __construct while you made it so so so easy!

    Thank you again !!!

  • this is a best tutorial for first demo app

  • thanks for this..you made it so easy for us.. keep it up

Leave a comment