Laravel

gray clock

02 jul 15

comments

geen reactie

author

Xavier

Laravel-5

Laravel is een gratis open-source PHP web application framework dat sinds 2011 in ontwikkeling is onder leiding van de Amerikaan Taylor Otwell. Sindsdien is de populariteit van het framework blijven stijgen. Sinds Laravel 4 komt er iedere 6 maanden een nieuwe minor versie uit. Laravel 5.1 (release juni 2015) is de eerste LTS versie. LTS staat voor Long Term Support en dit betekent dat er 2 jaar lang bug fixes en 3 jaar lang security fixes zullen worden uitgebracht, zonder dat er een upgrade moet gebeuren naar een nieuwere Laravelversie. LTS versies zullen om de 2 jaar worden uitgebracht. Dit betekent dat de volgde LTS versie zal uitgebracht worden in mei 2017. Developmentbedrijven en klanten zijn dus voor meerdere jaren verzekerd van bug fixes.

Het PHP framework voor web artisans

Laravel is eenvoudig en snel te installeren met composer. Andere third-party packages kunnen dus ook gemakkelijk toegevoegd worden aan een Laravel project. Het framework is supersnel en bevat heel wat moderne, krachtige features: een ORM (Eloquent), routing, queues, authentication, … Met Laravel schrijf je in een mooie, expressieve syntax om human friendly code te bekomen waarbij alle fricties verborgen worden door het framework. Het is eenvoudig te leren dankzij de geweldige documentatie of een Studyx Laravel training.

History

De eerste versie kwam uit in juni 2011 en bevatte o.a. authentication, localisation, models, views en sessions, maar nog geen controllers. In september van datzelfde jaar bracht versie 2 controllers, inversion of control (IoC) en het Blade templating systeem. In februari 2012 was er Laravel 3 met een command-line interface (CLI) genaamd ‘Artisan’, ondersteuning voor meer databasesystemen, migrations (versiebeheer voor database layouts) en events.

Laravel 4 werd gereleased in mei 2013. Hiervoor werd het framework volledig herschreven. De verschillende onderdelen werden verdeeld in verschillende composer packages. Sindsdien komt er om de 6 maanden een nieuwe minor versie uit, kort na de recentste symfony versie. Er wordt namelijk van heel wat Symfony componenten gebruik gemaakt achter de schermen. Nieuwe features waren database seeding, message queues, verschillende mail types, soft deletion van database records.

Laravel 5 kwam uit in februari 2015 en heette oorspronkelijk Laravel 4.3 maar werd hernoemd vanwege de vele veranderingen. Deze veranderingen worden verder in dit artikel besproken.

whats-new-in-laravel-5

Handen in het haar met uw Laravel project of plannen voor een nieuw Laravel project? Contacteer ons.

Nieuw in Laravel 5.0

Deze versie kwam uit in februari 2015.

Directory Structure

De eerste grote aanpassing is de nieuwe mappenstructuur. De `app` map werd grondig veranderd en sommige zaken werden buiten `app` geplaatst (config, database, storage, resources).

Blade changes

Er zijn niet zo veel aanpassingen gebeurd maar één verandering is belangrijk bij het upgraden van Laravel 4 naar 5. In Laravel 4 waren twee stijlen aanwezig: `{{` (raw echo) en `{{{` (escaped echo). Nu is dat veranderd: dubbele en driedubbele accolades zijn nu een raw echo en voor een escaped echo gebruikt men `{!! Form::open() !!}`.

Contracts

Contracts zijn een verzameling interfaces die kerndiensten van het framework definiëren. Ieder contract heeft een overeenkomstige implementatie gelevered door het framework. Contracts laten toe om eenvoudig een andere implementatie te gebruiken dan de ingebouwde implementatie. Contracts dienen ook als documentatie van het framework.

Commands & Events

Commands en events hebben een makeover gekregen. Er is een nieuwe command bus.

Facades and helpers

Facades zitten nog altijd in Laravel 5, maar de nieuwe helperfuncties beginnen de meest gebruikte items te vervangen. Bijvoorbeeld `View::make(‘path.to.view’)` kan nu eenvoudig vervangen worden door `view(‘path.to.view’)`.

Routes

Routes kregen 2 nieuwe features: caching en middleware. Met route caching kunnen vooral applicaties met heel veel routes een pak sneller gemaakt worden. Middleware is de vervanger van filters.

Controller method injection

Laravel 4 ondersteunde all controller construction injectie. Nu is dit uitgebreid en kan je eender welke dependency type-hinten in je methods.

Authentication scaffolding

Een standaard authenticatieproces is inbegrepen in de vorm van twee traits: `AuthenticatesAndRegistersUsers` en `ResetsPasswords`. Deze kunnen gebruikt worden in een controller, maar de methodes kunnen ook overscreven worden.

Socialite

Socialite is een optionele package die OAuth gemakkelijker maakt. Momenteel ondersteunt het Facebook, Twitter, Google, GitHub en LinkedIn.

Flysystem

Flysystem is een package die nu gebruikt wordt in Laravel 5 als bestandsysteemabstractie. Dit maakt het mogelijk om gemakkelijk een lokaal bestandsysteem in te ruilen voor een remote systeem zoals S3, Rackspace, Dropbox …

dotenv – Environmental detection

Laravel gebruikt een package genaamd PHP dotenv die environment variabelen laad uit een `.env` bestand.

Form requests

Request kunnen geauthoriseerd en gevalideerd worden met form requests. Deze kunnen dan eenvoudig geinjecteerd worden in de controller.

Elixir

Elixir is een wrapper rond gulp en maakt het werken met assets gemakkelijker (CSS, JS, SASS, LESS).

Scheduler

Scheduler is ontworpen om CRON-taken te vereenvoudigen. Er hoeft enkel een cron job opgezet te worden die `artisan schedule:run` iedere minuut aanroept. Eens de cron is opgezet, kan je eender welke taak laten uitvoeren op een duidelijke en gebruiksvriendelijk manier.

$schedule->command('cache:clear')
->hourly()
->sendOutputTo($filePath)
->emailOutputTo('john@doe.com');

New dd()

Eén van de populairste features van Laravel, `dd()` (dump and die), heeft een upgrade gekregen en gebruikt de VarDumper component van Symfony.

Eloquent attribute casting

Eloquent atribute casting laat toe om om attributen te converteren naar een ander datatype.

protected $casts = [
'is_admin' => 'boolean',
'options' => 'array',
];

Whoops

In Laravel 4 was een error handler genaamd Whoops aanwezig. Deze is verwijderd in Laravel 5 en nu worden de standaard Symfony foutberichten gebruikt.

Generators

Artisan is nu nog krachtiger en kan boilerplate code genereren voor commands, artisan commands, controllers, events, middleware, migrations, Eloquent models, service providers en form requests. Ook is er een command om de ontbrekende events en event handlers te genereren.

Upgrading

Upgaden naar Laravel 5 is geen kwestie van zomaar even `composer update` uit te voeren. In de officiële documentatie wordt zelfs aangeraden om een nieuwe installatie te doen, en daarna alle applicatiespecifieke code te kopiëren.

laravel-5.1-released

Nieuw in Laravel 5.1

Deze versie kwam uit in juni 2015.

LTS

LTS werd hierboven reeds besproken.

Documentation

De documentatie is volledig herschreven om meer duidelijkheid en diepte te bieden. Er is tevens een real-time zoekfunctie aanwezig met auto-complete.

PSR-2

Er wordt nu gebruik gemaakt van PSR-2, een coding style. De grootste aanpassing hierbij is dat in plaats van tabs, spatie worden gebruikt. Controlestructuren gaan op dezelfde lijn.

Blade service injection

Er kan nu een service geïnjecteerd worden in een Blade template:

@extends('layouts.app')
@inject('stats', 'StatisticsService')

{{ $stats->getCustomerCount() }}

 

Broadcasting events

Laravel bevat reeds een krachtig eventsysteem en dit wordt nu uitgebreid met de mogelijk om events te broadcasten over een websocket. Deze feature vergemakkelijkt het maken van real-time applicaties.

Testing

Laracasts’ integrated testing package zit nu in het framework, en applicatie testing is nu gemakkelijker dan ooit.

public function testNewUserRegistration()
{
$this->visit('/register')
->type('Taylor', 'name')
->check('terms')
->press('Register')
->seePageIs('/dashboard');
}

CSRF except

In versie 5.0 passeerden alle requests door de CSRF middleware. Dit is goed in de meeste gevallen, maar wat als je een uitzondering wil in bepaalde situaties? Dit kan nu in 5.1 met de `$except` property in de `VerifyCsrfToken` klasse.

protected $except = [
'webhook/*'
];

Middleware parameters

Het is nu mogelijk om parameters mee te geven aan middleware.

Loading...

Daag ons uit!

Daag ons uit met jouw project, laat het ons weten!