¿Por qué Laravel está tomando la comunidad PHP por Storm?

Debo admitir: en un momento, me sentía un poco mal con el lenguaje PHP. Varios artículos conmovedores de odio de PHP rodearon la web como un virus, y algunos de sus marcos emblemáticos, como CodeIgniter, crecieron rápidamente. Mientras tanto, Ruby on Rails parecía liderar el paquete, en términos de innovación y facilidad de desarrollo. A medida que el tiempo avanzaba, me encontré alcanzando mi cinturón de herramientas Ruby más y más.

Pero, entonces, un día, descubrí un nuevo y elegante marco, llamado Laravel. Al principio, lo descarté como otro clon de Sinatra que disminuiría rápidamente a la nada, ya que el desarrollador principal lo abandonó. Pero aún así, semana tras semana, mis redes sociales estaban en ráfaga, alabando la legibilidad de Laravel. "¿Podría ser", pensé para mí mismo, "que PHP finalmente tenga un marco realmente moderno?"

Obtenga más información sobre Laravel en http://laravel.com

Ya no estaba dispuesto a sentarme al margen; ya era hora de cavar. Un año más tarde, y soy uno de los evangelistas más grandes. ¡Laravel en realidad hace que PHP sea divertido otra vez! Aún mejor, ya no creo que PHP esté condenado para siempre a sitios en su mayoría personales y feos blogs de WordPress. No de hecho, es la creencia de este escritor de que, gracias a Laravel, Composer y PHP 5.5, estamos a punto de experimentar el próximo renacimiento del lenguaje de servidor más popular de la web..

Para instalar la última versión de desarrollo de Laravel (v4), primero deberá instalar Composer. Luego, simplemente clona el repositorio e instala las dependencias. git clone git: //github.com/illuminate/app.git myApp y instalación del compositor. Usted está listo para ir!


Elocuente

La mayoría de los desarrolladores de PHP comienzan su viaje anidando innumerables líneas de SQL directamente en su frígido e ilegible PHP. No hace falta decir que, excluyendo el más básico de los sitios web, esto rápidamente lleva a un desorden inigualable.

¿Recuerdas la primera vez que escuchaste sobre Ruby on Rails 'ActiveRecord? Bueno, en el fin del mundo de PHP, Eloquent es su principal implementación.

Necesito algunos ejemplos?

// Recupera todas las tareas $ task = Task :: all (); // Recupera la tarea con un id de 1 $ task = Task :: find (1); // Actualizar una tarea $ task = Task :: find (1); $ task-> title = '¡Baja esa cookie!'; $ tarea-> guardar (); // Crear una nueva tarea Task :: create (['title' => 'Write article']); // Eliminar una tarea Tarea :: buscar (1) -> eliminar ();

¡Gente, no es posible escribir código más legible en PHP! Ahora sería una cosa si Eloquent solo le permitiera realizar operaciones CRUD básicas en una tabla, pero ciertamente ese no es el caso.

Considere las relaciones de la tabla, como un usuario y sus respectivas tareas. En Laravel, después de establecer un método de búsqueda rápida para cada modelo, podemos manejar fácilmente la relación uno a uno o cualquier asociación. Aquí hay algunos ejemplos para abrir el apetito.

// Obtenga todas las tareas del autor con un ID de 1 $ tasks = User :: find (1) -> task; // Obtener el autor de una tarea $ author = Task :: find (5) -> user () -> username; // Insertar una nueva tarea por el autor $ task = new Task ([title: 'Go to store.']); Usuario :: buscar (1) -> tareas () -> insertar ($ tarea);

No es una exageración considerar a Eloquent como la mejor implementación de ActiveRecord en el lenguaje PHP.


Paquetes de compositores

Instalar compositor.

A partir de Laravel 4 (actualmente en Alpha), todo el framework estará modularizado y disponible como paquetes individuales de Composer..

Composer es un sistema de empaquetado para PHP que es similar a PEAR, pero mejor. Hace que el proceso de gestión de dependencias sea lo más fácil posible..

Piense en el ecosistema marco existente. En este momento, estás obligado a vivir con el conjunto de características principales de cada marco. No puedes elegir, digamos, usar Eloquent en una aplicación CakePHP. Como puedes imaginar, esta verdad ha llevado a un proceso demente de reinventar la rueda una y otra vez ... y más.

Señoras y señores, el futuro de PHP es modular. ¿Por qué instalar un marco hinchado y masivo, cuando solo necesita algunas de sus ofertas? Bueno, pronto, no tendrás que hacerlo. ¿Solo requieren Eloquent en un proyecto simple? Bien, ¡no hay problema en absoluto! Simplemente instálalo a través de Composer, y continúa!

Entonces, si nos estamos moviendo a un mundo PHP más basado en paquetes, ¿cómo encaja Laravel? Bueno, piense en ello como una colección predeterminada de paquetes, envueltos en un arco. Aún mejor, si necesita actualizar a la última versión del marco, es tan fácil como ejecutar actualización del compositor.

Como ejemplo de la flexibilidad que esto proporciona, agreguemos la popular biblioteca de pruebas de Mockery a una aplicación Laravel. Comienza con un nuevo proyecto de Laravel 4 y edita su compositor.json archivo para requerir burla.

"require": "illuminate / foundation": "> = 1.0.0", "mockery / mockery": "dev-master", "autoload": "classmap": ["app / controllers", " app / models "," app / database / migrations "," app / tests / TestCase.php "]

Consulte Packagist.org para obtener una lista de los paquetes de Composer disponibles, así como las instrucciones de instalación..

Ahora que hemos informado a Composer que nuestra aplicación requiere Mockery, podemos instalar las dependencias correspondientes.

actualización del compositor

¡Y eso es! Ahora podemos usar Mockery dentro de nuestras pruebas. ¡Este es el poder de Composer y Laravel 4 en el trabajo! Tenemos ruedas; ¡Dejemos de crear nuevos! Cientos y cientos de paquetes están disponibles a través de Packagist.org.

   

Cientos y cientos de paquetes están disponibles a través de Packagist.org.


Rutas

La mayoría de los desarrolladores de PHP principiantes no están familiarizados con nada más que con los sistemas de rutas más naturales. Cree un árbol de directorios para que coincida con el URI que desee y continúe. Por ejemplo, agregue un index.php Archivo al siguiente directorio: blog / admin /, y, ahora, puedes acceder a ella navegando a: localhost: 8888 / blog / admin / index.php. ¡Fácil! Bueno, tal vez al principio; pero es probable que encuentre que necesita más flexibilidad y control sobre qué ruta se activa en su aplicación.

Laravel adopta un enfoque increíblemente simple y fácil de usar para enrutar. Como ejemplo, escribamos la ruta necesaria para mostrar una vista del perfil de un usuario.

Route :: get ('users / id', función ($ id) // encuentra el usuario $ user = user :: find ($ id); // muestra la vista y pasa el objeto de usuario return View :: make ('users.profile') -> con ('user', $ user););

Ahora, cuando un usuario solicita example.com/users/1, la usuarios / perfil.php la vista será renderizada.

Alternativamente, podemos usar controladores tradicionales para manejar la lógica..

Route :: get ('users / id', 'Users @ show');

Ahora, Controladores / Usuarios.php será responsable de presentar la vista, específicamente la espectáculo método.

con ('usuario', $ usuario); 

Autenticación fácil

Casi cualquier aplicación web de sustancia requerirá algún tipo de autenticación. Laravel proporciona una interfaz simple, pero fácil de usar para autenticar usuarios.

Comience creando un usuarios mesa con los campos necesarios para la nombre de usuario y contraseña. Recuerde: este es un caso de uso perfecto para una migración!

Laravel puede entonces intento para iniciar sesión en un usuario, probablemente en función de los valores proporcionados por el usuario desde un formulario.

Aquí hay un ejemplo básico, menos el aspecto de validación..

Route :: post ('login', function () $ credentials = array ('username' => Input :: get ('username'), 'password' => Input :: get ('password')); / / realizar la validación si (Auth :: try ($ credentials)) // Credentials match. Logged in! return Redirect :: to ('admin / profile'););

Tenga en cuenta que, detrás de la escena, Laravel hará un hash automático de la contraseña proporcionada y la comparará con lo que está almacenado en el usuarios mesa.

Suponiendo que las credenciales del usuario coincidan, la ID del usuario se almacenará en la sesión y el usuario iniciará sesión. En las solicitudes posteriores, puede capturar el nombre de usuario del usuario que está conectado actualmente con:

$ user = Auth :: user () -> username;

Enviando email

Admítelo: enviar un correo electrónico a través de su aplicación siempre es más complicado de lo que debería ser. Ya no en Laravel 4!

Construido sobre el popular paquete SwiftMailer, ahora encontrarás un nuevo config / mail.php archivo en su aplicación. Aquí es donde puede especificar las credenciales necesarias para su proveedor de correo electrónico. Aquí hay una versión simplificada de lo que encontrarás:

 'smtp.example.com', 'puerto' => 2525, 'from' => array ('address' => null, 'name' => null), 'encryption' => 'tls', 'username' = > nulo, 'contraseña' => nulo,);

Simplemente reemplace los valores con los de su servidor de correo electrónico, en consecuencia.

A continuación, necesitamos una vista para el correo electrónico. Vamos a crear uno, llamado bienvenido.blade.php, que se utilizará cuando un nuevo miembro se registre en nuestro sitio web para fanáticos de Justin Bieber.

  Hola, $ usuario-> nombre. ¡Gracias de nuevo por registrarte para recibir las últimas noticias de Justin Bieber! Esperamos verte alrededor. Gracias gestion  

Con todo en su lugar, configuremos la ruta de ejemplo necesaria y enviemos el correo electrónico.

Route :: get ('/', function () $ user = User :: find (1); $ data = ['user' => $ user]; // vista de correo electrónico, datos para ver, cierre para enviar correo electrónico Mail :: send ('emails / welcome', $ data, function ($ message) use ($ user) $ message -> to ($ user-> email) -> subject ('Welcome Bieber Fan!') -> attach ('images / bieberPhoto.jpg');); devolver 'Mensaje de bienvenida enviado';);

Bastante simple, ¿eh? Tomamos al nuevo usuario de la mesa y enviamos un correo electrónico a la dirección de correo electrónico asociada de ese usuario. Gracias a la funcionalidad SwiftMailer, realizar acciones aparentemente complejas, como adjuntar archivos, ¡es un juego de niños! Ahora, cada miembro nuevo recibe una foto de Justin Bieber al registrarse. Perfecto!


BFFs con columna vertebral

"Backbone proporciona la estructura para tu desordenado código de espagueti!"

Laravel 4 hace que el proceso de creación de API REST sea lo más simple posible. La clave está en cómo, de forma predeterminada, se devolverá JSON desde una ruta.

Imaginemos que necesitamos devolver una lista de todos los usuarios como JSON. Bueno, Chuck, podemos lograr eso en una sola línea..

Route :: get ('users', function () return User :: all (););

Si ejecuta esta ruta, se mostrará un poco de JSON, como:

["id": 1, "username": "[email protected]", "id": 2, "username": "[email protected]"]

Preguntándose dónde contraseña campo es? En Laravel, dentro del modelo asociado de la tabla, podemos especificar, a través de un $ escondido propiedad, qué campos ocultar de la salida JSON.

Ahora, con una biblioteca de JavaScript, como Backbone, podemos obtener estos datos con facilidad.

var Usuario = Backbone.Model.extend (); var UsersCollection = Backbone.Collection.extend (model: User, url: '/ users'); var users = new UsersCollection; users.fetch (); users.toJSON (); // [Objeto, Objeto, Objeto]

¿Qué hay de obtener un solo usuario en su lugar? Bueno, primero deberíamos configurar la ruta Laravel adecuada:

Route :: get ('users / id', function ($ id) return User :: find ($ id););

Como hemos aprendido, esto devolverá el JSON para el usuario solicitado (menos el contraseña). A continuación, creamos un modelo de Backbone y recuperamos los datos..

var User = Backbone.Model.extend (urlRoot: '/ users'); var usuario = nuevo usuario (id: 1); user.fetch (); // id: 1, nombre de usuario: '[email protected]'

¿Observe cómo la peor parte del trabajo está en el lado del cliente? Nuestro código Laravel es lo más barebones posible..


Migraciones

Si usted es exclusivamente un desarrollador de PHP, es probable que aún no haya experimentado la alegría de las migraciones, que fueron popularizadas por primera vez por el marco de Ruby on Rails..

Piense en las migraciones como control de versiones para su base de datos. ¿Qué pasaría si, el día después de agregar ese nuevo campo a su Tareas Mesa, te diste cuenta de que no era necesario después de todo. Bueno, eliminarías el campo manualmente, ¿verdad? Pero ¿qué pasa con los otros desarrolladores de tu equipo? Su código puede romperse si no les dices!

Sin embargo, con las migraciones, simplemente hacemos retroceder la migración anterior y continuamos con nuestro día. Aún mejor, al enviar cambios a su servidor, un simple php artesano migrar comando actualizará automáticamente su base de datos de producción. Cuando se combina con Schema Builder de Laravel, esto hace que el proceso de administración de bases de datos sea lo más fácil posible..

Vamos a crear una migración para agregar una nueva usuarios Tabla a nuestra base de datos. Desde la línea de comando:

Migración de php artesanal: crea create_users_table --table = users --create

En el fragmento anterior, especificamos el nombre de la tabla, así como el --crear indicador, para especificar que estamos creando una nueva tabla, en lugar de modificar una existente.

Este comando creará un nuevo archivo de migración dentro de nuestra aplicación. Luego podemos aprovechar la clase de esquema de Laravel para preparar el esquema de nuestra tabla.

incrementos ('id'); $ table-> string ('title'); );  / ** * Revertir las migraciones. * / public function down () Schema :: drop ('tareas'); 

Observe cómo esta clase ofrece dos métodos: arriba y abajo, que especifican qué acción debe tomar Laravel al ejecutar una migración, así como revertirla.

En este caso, en arriba(), creamos una nueva tabla, Tareas, y especifique dos campos para el carné de identidad y título de la tarea, respectivamente. Al revertir la migración, simplemente soltamos la tabla..

Ejecute la migración volviendo a la Terminal y escribiendo:

php artesano migrar

¡Eso es! Ahora tienes un nuevo Tareas ¡Mesa con dos campos! ... Oh, oh, ¿necesito revertirla? Sencillo:

php artesano migrate: rollback

Adiós Tareas mesa.


Espada

El motor de plantillas Blade de Laravel proporciona una sintaxis limpia para las vistas. Por ejemplo, con PHP normal, para filtrar a través de una lista de personas y hacer eco de sus respectivos nombres dentro de un elemento de lista, podríamos escribir:

Esta sintaxis se puede aplicar a la mayoría de las estructuras de control de PHP.

No está tan mal, pero podemos hacerlo mejor. Cualquier vista de Laravel que contenga el .blade.php la extensión del archivo será analizada, en consecuencia. Como resultado, el fragmento anterior se puede reemplazar con:

    @foreach ($ personas como $ p)
  • $ p
  • @endforeach

Observe cómo se envuelven las variables que deben hacerse eco dentro de , similar a lo que encontrarías en un motor de plantillas de JavaScript, como los manillares.

Blade también se puede utilizar para diseños elegantes y páginas maestras. Vamos a crear una vista maestra base para demostrar esta funcionalidad..

// views / layout.blade.php       
@yield ('contenedor')

los @rendimiento la linea es clave Esto especifica que cualquier niño ve con una sección carné de identidad de envase debería estar anidado allí.

Vamos a crear una nueva vista..

// views / home / hello.blade.php @layout ('layout') @section ('container') 

Hola, $ usuario-> nombre!

@endsection

¡Hecho! Páginas maestras fáciles en PHP!


Controladores de recursos

Sin un poco de ayuda, crear un servicio RESTful en PHP puede resultar algo difícil. Bueno, en Laravel 4, no podría ser más simple. El marco ofrece lo que llamamos Recursos Restful. Vamos a probarlo.

Dentro de tu rutas archivo, especifique un nuevo recurso.

Ruta :: recurso ('tareas', 'Control de tareas');

Esta línea de código designa que queremos crear un nuevo recurso, Tareas, y coloca el TareasController Controlador encargado de manejar la lógica de cada ruta..

Al seguir los principios de REST, este recurso registrará automáticamente rutas para:

  • Tareas GET (Mostrar todas las tareas)
  • OBTENER tareas / id (Mostrar tarea individual)
  • OBTENER tareas / crear (Mostrar formulario para crear una nueva tarea)
  • Tareas POST (Crear una nueva tarea)
  • GET task / id / edit (Editar tarea única)
  • Tareas PUT / id (Actualizar tarea)
  • Eliminar tareas / id (Eliminar tarea)

A continuación, vamos a crear eso TareasController, pero, en lugar de hacerlo manualmente, dejaremos que Artisan se encargue de la placa de calderas..

controlador php artesano: hacer TasksController

Esto creará una nueva Controles / TareasController.php Controlador, y llenarlo con un poco de repetitivo..

 

Cada uno de estos métodos se activará cuando se active la ruta RESTful aplicable. Por lo tanto, para mostrar un formulario para crear un nuevo tarea, Cargaríamos la vista aplicable dentro del crear método, que se activará cuando example.com/tasks/create se solicita Esa forma debe POSTAR /Tareas, en cuyo caso el almacenar el método se activará.

No podria estar mas limpio!

Consulte la página de Vimeo de UserScape para obtener los últimos screencasts oficiales de Laravel


Siembra de base de datos

¿Cuántas veces te has encontrado manualmente "sembrando" una tabla de base de datos con registros ficticios, con el fin de realizar pruebas? Para mí, bueno, es un número grande! Laravel 4 nos permite especificar una semilla archivo para una mesa.

Para probarlo, cree un nuevo archivo con el mismo nombre que su tabla respectiva dentro de la aplicación / base de datos / semillas Directorio de su aplicación. Este archivo debe almacenar una matriz de matrices, cada una de las cuales contiene los pares clave-valor necesarios. Aquí hay un ejemplo:

 'Ir a la tienda'] ['title' => 'Finalizar el artículo de Laravel'] ['title' => 'Recoger huevos'. ]]);

Ahora hemos descrito tres nuevas filas para el Tareas Tabla en nuestra base de datos. Sembrémoslo.

php artesano db: semilla

Hecho!


Setters modelo y Getters

Es probable que haya una variedad de acciones que desencadena con frecuencia al configurar u obtener un campo de una tabla de base de datos. Por ejemplo, cuando un usuario se registra, para seguir las mejores prácticas de seguridad, siempre debemos usar su contraseña. En lugar de hacer el trabajo manualmente, actualicemos el Usuario modelo, y especifique que, al establecer una contraseña, primero se debe utilizar un hash.

contraseña ); 

¡Fácil! Ahora, nunca tenemos que preocuparnos por esa pieza del rompecabezas, al registrar un nuevo usuario. Naturalmente, la opción de reversa también está disponible, si necesita procesar el valor de un campo antes de "obtenerlo".

¿Qué pasa si necesitamos prettificar una marca de tiempo o un nombre? Esto, también, se puede lograr a través del modelo, si lo desea.

nombre. ". $ this-> lastName;

Este nuevo nombre completo() El método ahora estará disponible para nuestra instancia de usuario..

echo User :: find (1) -> fullName (); // John Doe

Comunidad (Conferencia)

Quizás más importante que cualquier otra cosa, Laravel, en un período de tiempo relativamente corto, ha acumulado una comunidad próspera y evangélica, que está compuesta por algunos de los desarrolladores más influyentes de la comunidad PHP..

¿Porque es esto importante? Sencillo: con el evangelismo viene la educación y la contribución. ¡El mayor obstáculo para un nuevo marco es hacer correr la voz, y mostrarle a la gente cómo usar lo que está en peligro! Afortunadamente, Laravel se destaca en la documentación y tutoriales / screencast en toda la web, incluyendo un curso completo de verdad!

Conozca los entresijos de Laravel aquí en Tuts + Premium!

La verdad es que apenas hemos arañado la superficie de lo que es posible en Laravel. Todavía tenemos que cubrir el manejo de errores de Laravel, la integración de PHPUnit, la carga impaciente (antes y después de recuperar colecciones) y mucho más. Asegúrese de consultar la fantástica documentación para profundizar en el marco, y mantener los ojos abiertos para el lanzamiento oficial de la Versión 4!

La popular comunidad Nettuts + ofrece varios tutoriales específicos de Laravel.

Si este artículo sirvió para ser el ímpetu de tu nuevo amor por PHP y Laravel, quizás consideres asistir a la primera (Conferencia) anual de Laracon, programada para fines de febrero de 2013, en Washington D.C.!

La primera conferencia de Laravel, Laracon, se llevará a cabo en Washington DC los días 22 y 23 de febrero de 2013. Obtenga más información en http://conference.laravel.com