Está en la página 1de 25

AO DE LA CONSOLIDACIN DEL MAR DE LA GRAU

UNIVERSIDAD CIENTFICA DEL PER


FACULTAD DE CIENCIAS E INGENIERIA
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS

CURSO : PROGRAMACIN ORIENTADA A OBJETOS II.


DOCENTE: ING. PEDRO EVER VSQUEZ YLQUIMICHE.
ALUMNO: KEVIN IVN RAMIREZ ARMAS
KEMMER SINARAHUA ISHUIZA
JHULLY MARTHY CELIS LPEZ
JOS IDELSO CRUZ BUENO

Tarapoto Per
2016

HISTORIA

En el 2011 su creador, Taylor Orwell, mostr Laravel por primera vez al mundo. Por lo que, se trata de
un framework con un enfoque fresco y moderno; al ser bastante joven. Est hecho con la
arquitectura MVC y resuelve necesidades actuales como manejo de eventos y autenticacin de usuarios.
Adems, cuenta con un cdigo modular y extensible por medio de un administrador de paquetes y un un
soporte robusto para manejo de bases de datos.

LARAVEL
Laravel es
un framework de cdigo
abierto para
desarrollar
aplicaciones y servicios web con PHP. Su filosofa es desarrollar
cdigo PHP de forma elegante y simple, evitando el "cdigo
espagueti". Fue creado en 2011 y tiene una gran influencia de
frameworks como Ruby on Rails, Sinatra y ASP.NET MVC.

Visin general: Laravel tiene como objetivo ser un


framework que permita el uso de una sintaxis elegante y expresiva
para crear cdigo de forma sencilla y permitiendo multitud de
funcionalidades. Intenta aprovechar lo mejor de otros frameworks y
aprovechar las caractersticas de las ltimas versiones de PHP.
Gran parte de Laravel est formado por dependencias,
especialmente de Symfony, esto implica que el desarrollo de
Laravel dependa tambin del desarrollo de sus dependencias.

Qu es un Framework? Siendo muy simple, es un esquema


(un esqueleto, un patrn) para el desarrollo y/o la implementacin
de una aplicacin. S, es una definicin muy genrica, pero tambin
puede serlo un framework: sin ir ms lejos, el paradigma MVC (Model-View-Controller) dice poco ms
que separa en tu aplicacin la gestin de los datos, las operaciones, y la presentacin. En el otro
extremo, otros frameworks pueden llegar al detalle de definir los nombres de ficheros, su estructura, las
convenciones de programacin, etc.

Pongamos un ejemplo: una aplicacin web que utilice Java como


lenguaje de programacin puede implementarse de multitud de formas,
mediante servlets y JSPs. Hay algunas convenciones que es necesario
seguir, como usar un fichero de configuracin web.xml, pero el
programador sigue sin tener un patrn claro a seguir para la creacin de
servlets, clases, JSPs, etc.
En una primera estandarizacin, la utilizacin de una arquitectura MVC
aconseja que separemos la lgica de la aplicacin (en los servlets) de la
presentacin (usando JSPs); en concreto, no sera correcto codificar
lgica de aplicacin o accesos a base de datos dentro de los JSP.
Un paso ms all: utilizando Faces como framework, la estructura de la
aplicacin queda todava ms definida: un nico servlet (FacesServlet)
va a controlar el flujo de la aplicacin; adems, el uso de un fichero
concreto (faces-config.xml) permite crear la navegacin de la aplicacin,
definir los objetos (beans) pasados como parmetros, etc., todo ello sin
necesidad de codificarlo en Java o JSP.

Los frameworks no necesariamente estn ligados a un lenguaje concreto,


aunque sea as en muchas ocasiones. En el cada vez ms popular Ruby on
Rails, Ruby es el lenguaje de programacin y Rails el framework; por otro
lado, JavaServer Faces est orientado a desarrollos en Java. Sin embargo,
nada impide definir el mismo framework para lenguajes diferentes: por ejemplo,
existe un framework llamado Biscuit cuyo objetivo es prcticamente convertirse
en un PHP on Rails. Eso s, cuanto ms detallado es el framework, ms
necesidad tendr de ceirse a un lenguaje concreto.
Tambin es posible que el framework defina una estructura para una aplicacin
completa, o bien slo se centre en un aspecto de ella. Siguiendo con los
ejemplos, Ruby on Rails ofrece un marco para el desarrollo completo de una
aplicacin web, mientras que JavaServer Faces est ms orientado a
la interfaz de usuario.

Qu ventajas tiene utilizar un Framework?


Las que se derivan de utilizar un estndar; entre otras:
El programador no necesita plantearse una estructura global de la
aplicacin, sino que el framework le proporciona un esqueleto que hay
que rellenar.
Facilita la colaboracin. Cualquiera que haya tenido que pelearse con
el cdigo fuente de otro programador (o incluso con el propio, pasado
algn tiempo!) sabr lo difcil que es entenderlo y modificarlo; por tanto,
todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los
desarrollos colaborativos.
Es ms fcil encontrar herramientas (utilidades, libreras) adaptadas
al framework concreto para facilitar el desarrollo.

De acuerdo; pero qu framework utilizo?


Buscando en la red se encuentra mucha informacin
los frameworks existentes para las diferentes plataformas y lenguajes.

sobre

Posiblemente uno de sus principales problemas es que haya demasiados: ya


se sabe, lo bueno de los estndares es que hay muchos para elegir :). Sin
embargo, la eleccin del framework concreto a utilizar vendr marcada por:
El tipo de aplicacin a desarrollar.

El lenguaje de programacin y otras tecnologas concretas: base de


datos, sistema operativo, etc.

Como introduccin a los frameworks, Ruby on Rails me parece una buena


opcin para desarrollar una aplicacin web y como ejemplo de lo que es
un framework. Dentro del mundo Java, Struts parece uno de los ms
extendidos. En conclusin La utilizacin de un framework en el desarrollo de
una aplicacin implica un cierto coste inicial de aprendizaje, aunque a largo
plazo es probable que facilite tanto el desarrollo como el mantenimiento.

Existen
multitud
de frameworks orientados
a
diferentes
lenguajes,
funcionalidades, etc. Aunque la eleccin de uno de ellos puede ser una tarea
complicada, lo ms probable que a largo plazo slo los mejor definidos (o ms
utilizados, que no siempre coinciden con los primeros) permanezcan. Y si
ninguno de ellos se adapta a las necesidades de desarrollo, siempre es mejor
definir uno propio que desarrollar al por mayor.

Caractersticas:
Sistema de ruteo, tambin RESTful
Blade, Motor de plantillas.
Peticiones Fluent.
Eloquent ORM.
Basado en Composer
Soporte para el cach
Soporte para MVC
Usa componentes de Symfony
Adopta las especificaciones PSR-2 y PSR-4
QU ES PHP?
PHP es un lenguaje de cdigo abierto muy popular, adecuado para desarrollo web y que puede ser
incrustado en HTML. Es popular porque un gran nmero de pginas y portales web estn creadas con
PHP. Cdigo abierto significa que es de uso libre y gratuito para todos los programadores que quieran
usarlo. Incrustado en HTML significa que en un mismo archivo vamos a poder combinar cdigo PHP con
cdigo HTML, siguiendo unas reglas.
PARA QU SIRVE PHP?
PHP se utiliza para generar pginas web dinmicas. Recordar que llamamos pgina esttica a aquella
cuyos contenidos permanecen siempre igual, mientras que llamamos pginas dinmicas a aquellas cuyo
contenido no es el mismo siempre. Por ejemplo, los contenidos pueden cambiar en base a los cambios
que haya en una base de datos, de bsquedas o aportaciones de los usuarios, etc.

Cmo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un
software
y
hardware
especial.
Cuando
se
escribe
una
direccin
tipo
http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox o
Chrome, qu ocurre? Se envan los datos de la solicitud al servidor que los procesa, rene los datos
(por eso decimos que es un proceso dinmico) y el servidor lo que devuelve es una pgina HTML como si
fuera esttica.
El esquema es: Peticin de pgina web al servidor --> El servidor recibe la peticin, rene la informacin
necesaria consultando a bases de datos o a otras pginas webs, otros servidores, etc. --> El servidor
responde enviando una pgina web normal (esttica) pero cuya creacin ha sido dinmica (realizando
procesos de modo que la pgina web devuelta no siempre es igual).
En resumen:
Pginas estticas: Peticin --> Respuesta
Pginas dinmicas: Peticin --> Procesado y preparacin --> Respuesta

Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinmico y poder
interactuar con el usuario.

Veamos un ejemplo del contenido de una pgina web php, que habremos de almacenar en un archivo
que termina con la extensin. php y que contiene texto:

<!DOCTYPE html>
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
echo "Bienvenidos a aprenderaprogramar.com";
?>
</body>
</html>

Como podrs comprobar el contenido del archivo incluye cdigo HTML y en un momento dado aparece
una etiqueta <?php que significa que ah empieza el cdigo PHP. Por eso decimos que el cdigo PHP
est embebido (incluido o incrustado) en cdigo HTML.

Con PHP puedes procesar la informacin de formularios, generar pginas con contenidos dinmicos, o
enviar y recibir cookies, entre muchas ms cosas. PHP lo utilizan desde pequeas pginas web hasta
grandes empresas. Muchas aplicaciones web estn construidas usando PHP. Podemos citar Joomla y
Drupal (gestores de contenido de pginas web), osCommerce y Prestashop (tiendas on-line para
comercio electrnico), phpBB y SMF (sistemas de foros para pginas web), Moodle (plataforma educativa
para educacin on-line), etc.

Entre las habilidades de PHP se incluye la creacin de imgenes a partir de datos. Por ejemplo,
supongamos que tenemos una academia con 20 alumnos matriculados en un curso de informtica, 50
alumnos matriculados en un curso de matemticas y 30 alumnos matriculados en un curso de qumica.
Con PHP podemos generar automticamente imgenes similares a esta:

PHP tambin puede utilizar y presentar resultados en otros estndares de datos o lenguajes propios de
los desarrollos web, como XHTML y cualquier otro tipo de ficheros XML. PHP puede autogenerar stos
archivos y almacenarlos en el sistema de archivos en vez de presentarlos en la pantalla, utilizando estos
ficheros para generar contenido dinmico. Es decir, el contenido dinmico puede surgir de otros sitios
adems de desde bases de datos.
Tambin se puede interactuar con otros servidores usando cualquier protocolo. Por ltimo, PHP puede
enlazarse con otros lenguajes muy potentes como Java.
En resumen, PHP es un lenguaje potente, muy usado y de gran inters para los desarrollos web.

LAS PREVIAS

Antes de empezar con Laravel, necesitamos preparar nuestro equipo para


el desarrollo. Para esto, vamos a levantar un servidor local
instalando XAMPP.
Ahora, una vez instalado y levantado los servicios del servidor Apache,
vamos a instalar una herramienta muy buena que nos va a servir mucho:
Composer.
Composer es un manejador de dependencias de PHP, que nos permite
instalar paquetes que otros usuarios comparten con la comunidad.
Para instalar Composer en Windows, basta con entrar a la pgina de
Composer e ir al apartado "Download" para descargar su ltima versin.
En caso uses otro sistema operativo (OS), puedes encontrar ms informacin dentro de
la documentacin de Composer.
Bueno, ahora que tenemos nuestro servidor Apache levantado y contamos con Composer, podemos
empezar con la descarga de la ltima versin del fw Laravel, que tambin se puede encontrar en la
pgina principal de Laravel. Aqu se explica cmo hacer la instalacin con Composer.
Lo primero ser situarnos, con la consola de lnea de comandos, en la carpeta htdocs, donde crearemos
nuestro proyecto llamado Tutorial_Smartec, el que ya contar con el fw.

Una vez terminada la descarga de los archivos, podemos entrar en la carpeta de nuestro proyecto y
levantar un servicio de prueba para verlo funcionando. El script que debemos digitar es:
> php artisan serve

Ahora, vamos a la
direccin que
indica,
"http://localhost:8000", y podremos ver Laravel funcionando.
Qu es XAMPP y para qu sirve?
XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en el
sistema de gestin de bases de datos MySQL, el servidor web Apache y los intrpretes para lenguajes de
script: PHP y Perl. El nombre proviene del acrnimo de X (para cualquiera de los diferentes sistemas
operativos), Apache, MySQL, PHP, Perl. Desde la versin "5.6.15", XAMPP cambi la base de datos de
MySQL A MariaDB. El cual es un fork de MySQL con licencia GPL.
El programa est liberado bajo la licencia GNU y acta como un servidor web libre, fcil de usar y capaz
de interpretar pginas dinmicas. Actualmente XAMPP est disponible para Microsoft
Windows, GNU/Linux, Solaris y Mac OS X.
para qu sirve?

Como ya lo debes haber deducido, XAMPP es una herramienta de desarrollo que te permite probar tu
trabajo (pginas web o programacin, por ejemplo) en tu propio ordenador sin necesidad de tener que
accesar a internet.
Si eres un desarrollador que recin est comenzando, tampoco debes preocuparte sobre las
configuraciones ya que XAMPP te provee de una configuracin totalmente funcional desde el momento
que lo instalas (bsicamente lo extraes). Sin embargo, es bueno acotar que la seguridad de datos no es
su punto fuerte, por lo cual no es suficientemente seguro para ambientes grandes o de produccin.

Paquetes que vienen con XAMPP


Paquetes bsicos:
Apache, el servidor Web ms famoso.
MySQL, una excelente base de datos de cdigo libre.
PHP y Perl: lenguajes de programacin.
ProFTPD: un servidor FTP.
OpenSSL: para soporte a la capa de sockets segura.
Paquetes grficos:
GD (Graphics Draw): la librera de dibujo de grficos.
libpng: la librera oficial de referencia de PNG.
libpeg: la librera oficial de referencia de JPEG.
ncurses: la librera de grficos de caracteres.
Paquete de bases de datos:
gdbm: la implementacin GNU de la librera standard dbm de UNIX.
SQLite: un motor de base de datos SQL muy pequeo y cero configuraciones.
FreeTDS: una librera de base de datos que da a los programas de Linux y UNIX la habilidad de
comunicarse con Microsoft SQL y Sybase.
Paquetes XML:
expat: una librera parser de XML.
Salbotron: una toolkit de XML.

libxml: un parser C de XML y un toolkit para GNOME.


Paquetes PHP:
PEAR: la librera de PHP.
Una clase pdf que genera documentos PDF dinmicos con PHP.
TURCK MMCache: un potenciador de la performance de PHP.
Otros paquetes:
zlib: una librera de compresin.
mod_perl: empotra un intrprete de Perl en Apache.
gettext: un conjunto de herramientas que asiste a los paquetes GNU para producir mensajes
multilinguales.
mcrypt: un programa de encriptacin.
Ming: una librera de salida en Flash.
IMAC C-Client: un API de correos
Oficialmente, los diseadores de XAMPP, fueron los Baiker y Anthony Coorporation los cuales solo
pretendan su uso como una herramienta de desarrollo, para permitir a los diseadores de sitios webs y
programadores, testear su trabajo en sus propios ordenadores sin ningn acceso a Internet. En la
prctica, sin embargo, XAMPP es utilizado actualmente como servidor de sitios Web, ya que, con algunas
modificaciones, es generalmente lo suficientemente seguro para serlo. Con el paquete se incluye una
herramienta especial para proteger fcilmente las partes ms importantes.

COMPOSER
El asunto est as: PHP ha tenido algunos cuantos problemas en el mundo de la descarga de
paquetes/libreras, para hacer eso tenas que ir a la web (si es que tena) de alguna librera y buscar la
seccin de Descargas para poder utilizarla; sin contar con el hecho que para hacer eso en algunas
ocasiones necesitabas registrarte a la pgina; programadores PHP se quejaban de que no exista algo
como npm para Node.js o bundler para Ruby. Bien, ahora existe, se llama Composer y podra
considerarse una de las maravillas del mundo de PHP.
Composer es un manejador de dependencias.
Manejador de qu?
Composer es un manejador de dependencias, no un gestor de paquetes. Pero es cierto que trata
con paquetes y libreras, la instalacin siempre es local para cualquier proyecto, las libreras se instalan
en un directorio por defecto (normalmente es /vendor). Composer es capaz de instalar las libreras que
requiere tu proyecto con las versiones que necesiten. Y si mis libreras dependen de otras? Tambin es
capaz de resolver eso y descargar todo lo necesario para que funcione y as quitarnos del dolor de
cabeza de hacer todo eso de forma manual.
Qu problemas resuelve Composer?
Tienes un proyecto que depende de ciertas libreras desarrolladas por terceros, y a su vez, stas libreras
tambin dependen de otras (t no tienes porqu conocer estas libreras), lo que hace Composer en este
caso es averiguar que libreras deben instalarse; es decir, resuelve todas las dependencias indirectas y
descarga automticamente la versin correcta de cada paquete.
Cmo instalo Composer?
La instalacin de Composer es muy sencilla, si ests en Linux o Mac es slo ejecutar dos comandos en
la terminal:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

El primer comando descarga Composer a tu computador y el segundo lo mueve al directorio para que lo
puedas ejecutar globalmente usando $ composer desde cualquier carpeta, de lo contrario necesitaras
siempre referenciar al archivo con la ruta completa, por ejemplo, algo como: ~/Downloads/composer.phar.

Y si ests en Windows, tienes un instalador de Composer ejecutable. No, no es un virus. Aqu tienes las
instrucciones detalladas para instalar Composer en tu plataforma favorita.
Comandos disponibles con Composer
Si eres un programador Ruby entonces debes de estar familiarizado con el archivo Gemfile, o si eres de
Node.js con package. json; bueno, estos son los comandos que puedes utilizar con composer:

$ composer about
$ composer archive
$ composer browse
$ composer clear-cache
$ composer config --list
$ composer create project laravel/laravel
$ composer depends vendor/package
$ composer diagnose
$ composer dump-autoload --optimization
$ composer global
$ composer help
$ composer init
$ composer install
$ composer licenses
$ composer list
$ composer remove
$ composer require vendor/package
$ composer run-script
$ composer search my keywords
$ composer self-update
$ composer show
$ composer status

$ composer update
$ composer validate
Ahora explicar brevemente algunos comandos.
$ composer init
Al ejecutar este comando solicitar cierta informacin que servir para crear el archivo composer.json,
este lo explicar en el siguiente tutorial, solo mencionar que la informacin requerida es bsica para el
archivo, como el nombre del paquete, descripcin, autor(es), pgina del proyecto, y las dependencias. No
te preocupes, te explicar detalladamente qu es cada uno de estos datos.
$ composer install
Este comando procesa el archivo composer. json y resuelve las dependencias, normalmente las instala
en un directorio llamado /vendor, pero podemos especificar cualquier otro.
$ composer update
Actualiza las dependencias de tu proyecto a la ltima versin y tambin actualiza el archivo composer.
lock Esto se puede hacer de varias maneras, imagina que solo quieres actualizar una dependencia en
especfico, para hacer eso tienes que indicar el nombre del paquete, de la siguiente manera:
$ composer update vendor/package another-vendor/another-package vendor-x/package-x
Esto solo actualizar las dependencias especificadas, si quieres actualizar todas las dependencias de un
cierto paquete puede ahorrar muchos caracteres utilizando un comodn *, de la siguiente manera:
$ composer update vendor-x/*

El comando require instala las dependencias especificadas, este lo explicar ms detalladamente en el


siguiente tutorial, la sintaxis es la siguiente:
$ composer require vendor/package: *
El comando search busca el paquete indicado en Packagist, solo tienes que pasarle el nombre del
paquete.
$ php composer search monolog
El comando show muestra los paquetes disponibles y tambin puedes ver los detalles de un paquete en
especfico. Basta con pasarle un argumento, este tiene que ser el nombre del paquete:
$ php composer show vendor/package
Desplegar informacin como: el nombre del paquete, versiones, el tipo de paquete, el cdigo fuente, el
zip del cdigo fuente, licencia, etc.

El comando depends muestra la lista de paquetes de los cuales depende el paquete indicado. S, me
estoy refiriendo a las libreras de terceros. Muestra los paquetes de tipo require y require-dev.
$ php composer depends vendor/package
Para asegurarnos que nuestro archivo composer. json est escrito correctamente y que alguno no tendr
errores al descargarlo y tampoco tener problemas al instalar las dependencias, como algn carcter mal
escrito, podemos utilizar el comando valdate para verificar que todo est correctamente bien.
$ php composer valdate
Si a menudo realizas cambios en tus dependencias y las has instalado mediante el cdigo fuente del
repositorio, el comando status te permite comprobar si has hecho cambios en alguna de ellas, as como
el git status nos indica qu archivos hemos modificado, este comando funciona de la misma manera:
$ php composer status -v

Si aadimos la opcin -v nos brinda informacin ms detallada sobre los cambios producidos.
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.mdown
El comando self-update actualiza el propio Composer a la versin ms reciente, no tienes que realizar
ningn otro paso ms escribir en la consola lo siguiente:
$ php composer self-update
Si aadimos la opcin -v nos brinda informacin ms detallada sobre los cambios producidos.
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.mdown
El comando self-update actualiza el propio Composer a la versin ms reciente, no tienes que realizar
ningn otro paso ms escribir en la consola lo siguiente:
$ php composer self-update
Y listo, tendrs disponible la versin ms actualizada del manejador. Lindo, no?
El comando config te permite editar varias opciones de Composer, tanto en el archivo local del proyecto
como en el archivo global.
$ php composer config --list

El comando create-project crea un nuevo proyecto, es necesario pasar como parmetros el vendor y
package correspondiente. Esto es lo mismo que descargar el proyecto y despus ejecutar el archivo
composer. json que venga en l, el siguiente ejemplo crea un proyecto de laravel.
$ php composer create-project laravel/laravel mi-proyecto
Ahora, si necesitas actualizar tu archivo autoloader porque tienes nuevas clases puedes hacerlo con el
comando dump-autoload, es como ejecutar install o update, pero la ventaja es que puedes especificar
que se cree un arreglo de todas las clases del proyecto con sus respectivos archivos, de la siguiente
manera:
$ php composer dump-autoload --optimize
El comando run-script permite ejecutar manualmente alguno de los scripts definidos por algn paquete.
$ php composer run-script nombre-script --no-dev
Hemos agregado no-dev para desactivar el modo de desarrollo.
Utiliza el comando help para ver informacin sobre el comando solicitado.
$ php composer help install
El comando remove sirve para eliminar alguna dependencia que ya no utilicemos, de la siguiente manera:
$ php composer remove vendor/package

ESTRUCTURA DEL PROYECTO EN LARAVEL


Lo primero que debemos ver es la estructura del proyecto, las carpetas que se manejan y para qu nos
sirven. Vamos a explicar algunas de stas y, conforme avancemos con la complejidad en las posteriores
publicaciones, se irn explicando las restantes.
Si entramos a nuestro proyecto, podremos ver la siguiente estructura:

App\: En esta carpeta vamos a trabajar la mayor parte de nuestro proyecto. Aqu estarn nuestros
modelos a base
de datos, controladores, vistas y, en caso necesitemos, aqu colocaremos nuestras distintas capas para
trabajar. As mismo, encontraremos los archivos de configuracin de la aplicacin.
App\route.php: En este archivo, definiremos las rutas (URL's)

de nuestra aplicacin.

App\filter.php: En este archivo, escribiremos los distintos


a las rutas como por ejemplo SI no est logueado, ir a la
contrario, continuar.

filtros que se aplicarn


vista de login; caso

App\config\: En esta carpeta, encontrremos los archivos


nuestra aplicacin y nuestra base de datos.

para

configurar

App\controllers\: Esta carpeta, almacena los controladores de


entindase la lgica que rige nuestra pgina web.

la

aplicacin,

App\database\: En esta carpeta, se guardarn las


versiones de la base de datos, escritas con Schema
Laravel.

migraciones que son


Builder propio
de

App\models\: Esta carpeta, contendr los modelos que se


ejecucin de las migraciones en nuestra

obtienen

base de datos. Tambin los podemos modificar para definir llaves forneas y otros.

de

la

App\views\: En esta carpeta, tendremos los htmls de nuestro sistema. Aqu podemos trabajar (y es
recomendable) con el sistema de plantillas de Blade.
Public\: En esta Carpeta, pondremos nuestros css, js, imagenes y algunos otros recursos que podamos
necesitar o usar. En esta carpeta esta el archivo index.php que es el archivo que da inicio a todo el
proceso del fw.
Vendor\: Esta carpeta maneja todo el cdigo del fw; as como de terceros, packages y dependencias que
podamos necesitar en nuestro proyecto.

Modelo-Vista-Controlador?
Laravel 'entrega la opcin' de seguir usando la metodologa tradicional MVC. Sin embargo, el framework
propone una va ms rpida en PHP, la cual consiste en programar la interaccin HTTP directamente
como
una funcin
anmina asociada
a
una Ruta.
Esto tiene la ventaja de reducir la cantidad de cdigo, especialmente cuando slo necesitamos incluir una
funcionalidad.
As, donde antes necesitbamos programar una clase, ahora en Laravel slo requerimos escribir una
funcin en PHP.
Por
ejemplo,
si
para
desarrollar
http://mi-aplicacion.com/usuario/listar

una

aplicacin

que

responda

la

url:

En el patrn MVC tradicional necesitamos crear un controlador, en este ejemplo, un controlador con el
nombre 'usuario' y una accin 'listar' similar al siguiente cdigo PHP:
1.
2.

<? php
class Usuario_Controller extends Controller {

3.
4.

public function __construct() {

5.
6.

parent::__construct();
}

7.
8.

public function action_listar() {

9.

//punto de entrada de la peticin HTTP

10.

...

11.
12.
13.

14.

En cambio, en Laravel es mucho ms directo en su cdigo:


1.
2.

<?php
Route::get('usuario/listar', function() {

3.

//punto de entrada de la peticin HTTP

4.

...

5.
6.

});

Laravel, propone en el desarrollo usar 'Routes with Closures', en lugar de un MVC tradicional.

Manejo de los Datos en Laravel


Laravel incluye una valiosa pieza de software, llamada Eloquent ORM. Este ORM se funda en
patrn active
record y
su
funcionamiento
es
en
extremo
sencillo.
Un ORM (Object Relational Mapper) en PHP es un software que permite tratar la capa de persistencia de
los datos, como simples accesos a mtodos de una Clase u Objeto en PHP.
La funcionalidad interna del ORM es mapear los objetos de PHP a las tablas en la base de datos, para el
caso en que la persistencia de los datos de la aplicacin es proporcionada por una DB.
En Laravel es opcional el uso de Eloquent, pues tambin dispone de otros recursos que nos facilitan
interactuar
con
los
datos,
o
especficamente
la
creacin
de
modelos.
La forma de interactuar con los datos en un patrn de diseo MVC, es mediante la creacin de Modelos.
Los Modelos son clases en PHP que encapsulan todo el trabajo con los datos de una aplicacin.

Laravel: Los Modelos


La forma de crear Modelos en Laravel usando Eloquent ORM, es tan simple como:
1.

class Libro extends Eloquent {

2.
3.

//defiendo el nombre de la tabla con la info de los

4.

public static $table = 'tb_libros';

libros

5.

Incluso el cdigo del modelo puede ser ms simple an, en el caso que el nombre de la tabla coincida
con el nombre de la clase. Pues Laravel al igual que Ruby on Rails, usa el paradigma de programacin
donde se favorece "la convencin sobre la configuracin". Y si ahora necesitamos disponer un listado, en
la
ruta:
http://mi-aplicacion.com/libro/listar
Entonces, slo bastara crear la Ruta e interactuar con el modelo 'Libro' anteriormente creado, del modo
siguiente:
1.

Route::get('libro/listar', function() {

2.
3.

//obtener todos los registros de la tabla 'tb_libros':

4.

$libros = Libro::all();

5.
6.

//haciendo disponibles los datos a la vista y desplegndola:

7.

return View::make('mi_vista', $libros);

8.

});

Las Vistas en Laravel, al igual que en otros Frameworks PHP, son archivos de texto plano, que contienen
una plantilla HTML junto con cdigo PHP para desplegar la interfaz web al usuario de la aplicacin.

Laravel: las Vistas


Laravel incluye de paquete un sistema de procesamiento de plantillas llamado Blade. Este sistema de
plantillas, Blade favorece un cdigo mucho ms limpio en las Vistas, adems de incluir un sistema de
Cach que
lo
hace
mucho
ms
rpido.
Los Sistemas de Cache, evitan el tener que procesar el cdigo una y otra vez en cada peticin. Para lo
cual, estos sistemas generan versiones estticas en memoria o disco duro con archivos que
corresponden a peticiones previamente procesadas. Y con esta tcnica se logra mejorar el rendimiento
de la aplicacin.
El sistema Blade de Laravel, permite una sintaxis mucho ms reducida en su escritura. Por ejemplo, en
vez pintar la vista usando el cdigo PHP:
1.

<php echo $mi_nombre; >

En Blade se escribira:

1.

{{$mi_nombre}}

Lo cual, no es una gran ventaja sobre todo cuando siempre es posible usar una expresin resumida en
PHP. No obstante, lo que, si es una gran ventaja, es el modo en que Blade maneja los Layouts.
Los Layouts en los frameworks PHP, permiten organizar las vistas en PHP. En especial, todos los
elementos estticos en una aplicacin web que no cambian entre peticiones HTTP, como lo son:
Los Header,
Mens,
y Footers.
Generalmente, a estos elementos se les denomina 'partial views' (vistas parciales).

Uso Layouts con Blade


Los Layouts en Blade, son archivos de texto plano que contiene todo el HTML de la pgina con etiquetas
que representan elementos o zonas a incluir en el Layout, o vistas parciales como se conocen en otros
Frameworks
en
PHP.
Sin embargo, en Blade estos elementos incrustados se organizan en un slo archivo. Esta es una idea
muy interesante de Laravel que mejora la organizacin de las vistas y su rendimiento. Sobre todo,
cuando las vistas pueden llegar a ser muy complejas incluso con elementos anidados.
En
el
render
de
una
Vista
completa
en Lavarel se
usan
dos
(2)
archivos:
El Layouts definiendo el HTML global y las zonas a incluir.
Un slo archivo, la Vista, con los elementos (partial views).
Un

cdigo

tpico

sera

para

una

Layout

HTML5

de Blade:

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>@yield('titulo')</title>
</head>
<body>
</body>
</html>

En el Layout presentado, el cdigo @yield() identifica al mtodo donde como parmetro se indica el
nombre de la zona desplegar. Por otro lado, el cdigo de la vista, donde se define el Layout a usar y la
informacin de las distintas zonas a desplegar:

<!-- identificando el Layout a Utilizar -->


@layout('template')
<!-- definiendo una zona -->
@section('titulo')
<!-- incluir el cdigo de la seccin de nombre 'titulo' -->
...
@endsection
<!-- definiendo otra zona -->
@section('navegacion')
<!-- incluir el cdigo de la seccin de nombre 'navegacion' -->
...
@endsection

Entonces: Laravel es para Todos?


Laravel presenta grandes ventajas en el desarrollo web en PHP, apoyado en los avances de las nuevas
versiones de PHP han ofrecido a la comunidad. Este hecho, implica que para usar Lavarel necesitamos
disponer
de
versiones
modernas
de
PHP.
La actual versin de Laravel 3.2 requiere PHP 5.3, lo cual significa en la prctica que si tenemos cdigo
heredado que fueron programados para usar versiones antiguas del intrprete PHP, este no funcionar
correctamente
si
lo
ejecutamos
en
PHP5.3
en
el
mismo
servidor
web.
En resumen, Laravel es una excelente herramienta de software para el desarrollo da a da, dispone de
algunos de los factores claves que hacen a un proyecto open source exitoso:
No tiene requerimientos exticos sobre el stack de publicacin.
Una muy buena y completa documentacin online.
Y una comunidad creciente en el apoyo de este proyecto.

Controlador
Los controladores contienen la lgica de la aplicacin y permiten organizar el cdigo en clases sin tener
que escribirlo todo en las rutas. Todos los controladores deben extenderse de la clase BaseController.
Un ejemplo de un controlador en Laravel:

class UserController extends BaseController {


public function mostrarPerfil($id)
{
$user = User::find($id);;

return View::make('user.profile', array('user' => $user));


}
}
Estos pueden ser llamados en las rutas de diferentes maneras, pero la ms comn usndo rutas es:
Route::get('user/{id}', 'UserController@mostrarPerfil');

Influencia
La influencia de Laravel ha crecido rpidamente desde su lanzamiento. En la comunidad de
desarrolladores es considerado como alternativa sencilla de usar pero que tiene todas las funcionalidades
que debe tener un framework. Ha sido descargado ms de 320.000 veces, y se espera que supere en
popularidad a otros frameworks ya establecidos ms antiguos.

Laravel: Principales caractersticas y fuentes de inspiracin


Veamos qu es lo que puedes esperar de un proyecto con Laravel y como stas caractersticas pueden
ayudar de incrementar su productividad.

Modularidad: Laravel se ha construido utilizando ms de 20 libreras diferentes fuertemente


integradas con el gestor de dependencias Composer

Testeabilidad: construido para facilitar el testeo, Laravel tiene con varios asistentes (helpers) que
ayudan a visitar las rutas de testeo, navegando por el HTML resultante para asegurar que los
mtodos que se llaman desde las diferentes clases sean correctos, e incluso a impersonar a los
usuarios.

Enrutamiento (routing): Laravel proporciona una extrema flexibilidad en la definicin de las rutas
de la aplicacin. Inspirado en la filosofa de los micro-frameworks Sinatra y Silex. Todava ms, es
posible adjuntar funciones de filtro que se ejecuten en rutas especficas.

Gestor de configuracin: frecuentemente la aplicacin se ejecutar en diferentes entornos, esto


quiere decir que tanto la base de datos como credenciales o dominios sern diferentes si se ejecutan
el local en el entorno de test o en los servidores de produccin. Laravel nos permite definir
configuraciones separadas para cada uno de los entornos.

Confeccionador de consultas y ORM (Object Relational Mapper): cuando se instala Laravel


viene con un constructor de consultas, este nos permite lanzar consultas a la base de datos con una
sintaxis PHP de mtodos enlazados, en lugar de tener que escribir la SQL completa. Adems
proporciona un ORM y una implementacin de RegistroActivo (ActiveRecord) llamado Eloquent, que
permite definir modelos interconectados. Estos componentes son compatibles con bases de datos
tales como PostgreSQL, SQLite, MySql, MS SQL Server.

Confeccionador esquema, migraciones y repoblaciones: inspirado por la filosofa Rails, estas


caractersticas permiten definir un esquema de base de datos dentro de PHP y mantener un registro
de los cambios para as ayudar en la migracin de base de datos. Las repoblaciones (Seeding)
permiten poblar las tablas seleccionadas de una base de datos una vez realizada la migracin para
de esta forma rellenar con datos las tablas.

Motor de plantillas: Laravel viene con Blade, un lenguaje ligero de plantillas con el cual se
pueden crear diseos anidados con bloques predefinidos en el que el contenido se inserta
dinmicamente. Adems Blade guarda en cach los archivos generados.

Email: con la clase Mail que es un derivado de la librera SwiftMailer, Laravel proporciona una
forma muy sencilla de enviar e-mails, con contenido HTML y adjuntos.

Autenticacin: Laravel viene con las herramientas para crear en toda web un formulario de
registro, autenticacin e incluso envio de contraseas a usuarios que no la recuerden.

Redis: es un sistema de almacenamiento clave-valor en memoria que tiene fama de ser


extremadamente rpido.

Colas: Laravel se integra con diversos servicios de colas, tales como Amazon SQS o IronMQ, para
permitir el aplazamiento de tareas que son muy intensivas en recursos, as por ejemplo podemos
enviar una gran cantidad de e-mails ejecutando esta tarea en segundo plano en lugar de hacer que el
usuario espere delante de la pantalla.

Expresividad y simplicidad
El corazn de la filosofa de Laravel es la simplicidad y la expresividad. Esto quiere decir que los
implementadores de Laravel han dado especial atencin en el nombrado de las clases para comunicar
con efectividad las acciones en un ingls sencillo. Mira este cdigo:
<? php
Route:: get(' area/{ id}', function( $ id){
if( 51 = = $ area and !Auth:: check()) {
return Redirect:: guest(' login');
} else {
return Bienvenido a tu parte . $area;
}

})->where (id,[0-9]+);
Aunque probablemente no conozcas Laravel te puedes hacer una idea de lo que este cdigo hace. Eso
es expresividad, hacer que el cdigo sea ms legible, con lo que probablemente tambin ser ms
sencillo aprender y recordar la sintaxis. Los autores de Laravel se han preocupado mucho por la sintaxis,
as han hecho que todo sea ms sencillo de recordar, por ejemplo tomemos la clase File que se utiliza
para realizar manipulaciones con archivos.

Ms expresivo: para determinar cundo un archivo se elimin utilizamos File::lastModified($ruta)


el lugar de la sintaxis PHP filemtime(realpath($ruta)) o para eliminar un archivo File::delete($ruta) en
lugar de @unlink($ruta).

Ms consistente: algunas funciones de archivo de PHP tienen el prefijo file_ mientras que otras
empiezan por file, es decir unas abreviadas y otras no, en Laravel todo es ms consistente.

Ms testeable: muchas funciones de PHP pueden ser difciles de utilizar en tests debido a las
excepciones que lanzan y tambin porque son ms difciles de simular.

Ms extenso: se han agregado funciones que no existan antes como por ejemplo copiar un
directorio File::copyDirectory ($directorioOriginal, $directorioFinal)

lINKCOGRAFA
https://www.google.com.pe/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF8#q=LARAVEL+que+es
https://www.google.com.pe/search?
q=LARAVEL&espv=2&biw=1517&bih=741&site=webhp&source=lnms&tbm=isch&sa=X&sqi
=2&ved=0ahUKEwivser-veHLAhXHeCYKHchCkMQ_AUIBigB&dpr=0.9#imgrc=_BvrkcBJStScFM%3A
https://es.wikipedia.org/wiki/Laravel
https://www.google.com.pe/search?
q=codigo+spaghetti&espv=2&biw=1517&bih=741&source=lnms&tbm=isch&sa=X&ved=0ah
UKEwjvsP7GwOHLAhUDVyYKHTR3DP0Q_AUIBigB&dpr=0.9
http://www.bcnbit.com/laravel-4-resumen-para-principiantes-parte-i/
http://jordisan.net/blog/2006/que-es-un-framework/
https://devcode.la/tutoriales/laravel-5-nuestro-primer-proyecto/
http://laraveles.com/docs/4.1/

También podría gustarte