Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
sobre
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
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.
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 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
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.
para
configurar
la
aplicacin,
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.
5.
6.
parent::__construct();
}
7.
8.
9.
10.
...
11.
12.
13.
14.
<?php
Route::get('usuario/listar', function() {
3.
4.
...
5.
6.
});
Laravel, propone en el desarrollo usar 'Routes with Closures', en lugar de un MVC tradicional.
2.
3.
4.
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.
4.
$libros = Libro::all();
5.
6.
7.
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.
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).
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:
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:
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.
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.
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.
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 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/