Introduction à Laravel 4
Concepts de base
•
•
•
•

PHP 5 >= 5.3.0	

Composer	

RESTful	

Testable

Introduction à Laravel 4
getcomposer.org
Introduction à Laravel 4
Composer
•
•
•
•

packagist.org	

Packages réutilisables	

Gérer facilement les dépendences des applications	

Très facile...
Installation
•
•

Composer	

Laravel phar

Introduction à Laravel 4
Installation
Composer

Laravel Phar

Introduction à Laravel 4
Introduction à Laravel 4
Le composer.json de Laravel

Introduction à Laravel 4
•
•
•
•
•

Quelques fonctionnalités de
Laravel
Routage facile d’utilisation	

Authentification ‘built-in’	

Syntaxe de temp...
Routage / Routing
•
•
•
•

Closures	

Actions de controlleur	

Controlleurs RESTful	

Controlleurs ressourceful

Introduct...
Route avec closure

Introduction à Laravel 4

https://gist.github.com/nWidart/6334183
Route vers action controlleur

Introduction à Laravel 4

https://gist.github.com/nWidart/6334237
Route vers controlleur RESTful

Introduction à Laravel 4

https://gist.github.com/nWidart/6335300
Route vers controlleur resource

Introduction à Laravel 4

https://gist.github.com/nWidart/6335333
Route groups

Introduction à Laravel 4
Route filters

Introduction à Laravel 4
Route filters

Introduction à Laravel 4
Route filters

Introduction à Laravel 4
Sécuriser les routes

Introduction à Laravel 4
Secure route groups

Introduction à Laravel 4
Routes
Fonctions “avancées”
Paramètres optionels
Route::get('user/{name?}', function($name = 'Kai')	
{	
return $name;	
});	

Introduction à Laravel 4
Contraintes regex
Route::get('user/{name}', function($name)	
{	
//	
})	
->where('name', '[A-Za-z]+');	

Introduction à Lar...
Contraintes regex
Route::get('user/{name}', function($name)	
{	
//	
})	
->where('name', '[A-Za-z]+');	

Route::get('user/{...
Contraintes regex
Route::get('user/{id}/{name}', function($id, $name)	
{	
//	
})	
->where(array('id' => '[0-9]+', 'name' =...
Authentification
Authentification

Introduction à Laravel 4
Views
Views (blade)

Introduction à Laravel 4
Définir des layouts blade

Introduction à Laravel 4
Utiliser les blade layouts

Introduction à Laravel 4
Environements
Environements

Introduction à Laravel 4
Environements

Introduction à Laravel 4
Artisan
Artisan
•
•
•
•
•

CLI pour laravel	

Basé sur le composant Symfony/Console	

Utilisé pour des tâches régulières comme les...
Quelques commandes Artisan

Introduction à Laravel 4
Mode de maintenance

Introduction à Laravel 4
Migrations
Migrations
•
•
•
•

Gestions de versions pour la DB	

Unique par timestamp	

Construction & édition du layout DB	

Révenir...
Migrations

Introduction à Laravel 4
Schema builder

Introduction à Laravel 4
Schema builder

Introduction à Laravel 4
Exécuter les migrations

Introduction à Laravel 4
Query builder
Query builder

Introduction à Laravel 4
Query builder

Introduction à Laravel 4
Eloquent ORM
Eloquent ORM
•
•
•
•
•

Basé sur ActiveRecord de Rails	

Query scoping	

Rends la définition de relations ultra facile	

Ev...
Basic Eloquent model

Introduction à Laravel 4
CRUD avec Eloquent

Introduction à Laravel 4
Query Builder vs Eloquent

Introduction à Laravel 4
Query Scopes

Introduction à Laravel 4
Relations dans Eloquent
•
•
•
•

One to one	

One to many	

Many to many	

Polymorphic

Introduction à Laravel 4
One to One

Introduction à Laravel 4
One to One: inverse

Introduction à Laravel 4
One to One: inverse

Introduction à Laravel 4
One to Many
class Post extends Eloquent {	

!
public function comments()	
{	
return $this->hasMany('Comment');	
}	

!
}

$...
One to Many: inverse
class Comment extends Eloquent {	

!
public function post()	
{	
return $this->belongsTo('Post');	
}	
...
Many to Many
class User extends Eloquent {	

!
public function roles()	
{	
return $this->belongsToMany('Role');	
}	

!
}

...
Polymorphic
class Staff extends Eloquent {	

class Photo extends Eloquent {	

!

!
public function imageable()	
{	
return ...
Polymorphic
staff	
id - integer	
name - string	

!
orders	
id - integer	
price - integer	

!
photos	
id - integer	
path - ...
Polymorphic: récupérer la relation

$staff = Staff::find(1);	

!
foreach ($staff->photos as $photo)	
{	
//	
}

Introductio...
Polymorphic: récupérer le owner

$photo = Photo::find(1);	

!
$imageable = $photo->imageable;

Introduction à Laravel 4
N+1 problem
N+1
Méthode traditionnelle

Introduction à Laravel 4
N+1
Méthode traditionnelle

100 posts = 101 requêtes SQL
SELECT * FROM “posts”	

foreach result {	

	

 SELECT * FROM “use...
Solution
Eager Loading!
Solution
Eager Loading

Introduction à Laravel 4
Solution
Eager Loading

100 posts = 2 requêtes SQL
SELECT * FROM “posts”	

SELECT * FROM “users” WHERE “id” IN (1,2,3,4,…)...
JSON
•

Super facile de créer des APIs

Introduction à Laravel 4
JSON

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

Introduction à Laravel 4
JSON

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

Introduction à Laravel 4
Validation
Validation
$validator = Validator::make(	
array('name' => 'Nicolas'),	
array('name' => 'required|min:5')	
);	

Introductio...
Validation
$validator = Validator::make(	
array('name' => 'Nicolas'),	
array('name' => 'required|min:5')	
);	

if ($valida...
Validation
// Récupérer les messages d’erreur	

!
$messages = $validator->messages();	

Introduction à Laravel 4
Validation
// Récupérer les messages d’erreur	

!
$messages = $validator->messages();	

// Récupérer le premier message d’...
Validation
// Récupérer les messages d’erreur	

!
$messages = $validator->messages();	

// Récupérer le premier message d’...
Validation
// Récupérer les messages d’erreur	

!

// Toutes les erreurs	
foreach ($messages->all() as $message)

$message...
Validation
// Récupérer les messages d’erreur	

!

// Toutes les erreurs	
foreach ($messages->all() as $message)

$message...
Validation: example
Route::get('register', function()	
{	
return View::make('user.register');	
});	

!
Route::post('regist...
Ce n’est pas tout!
•
•
•
•
•
•

Evènements	

Caching	

Queues	

Localisation	

Unit Tests	

Mailer	


Introduction à Larav...
Symfony & Laravel
•
•
•

Symfony propose des composants stables et solides	

Release cycle prédéfini	

Couple parfait

Intr...
Symfony dans Laravel 3
•
•

symfony/console	

symfony/http-foundation

Introduction à Laravel 4
Symfony dans Laravel 4
•
•
•
•
•
•

symfony/browser-kit	

symfony/console	

symfony/css-selector	

symfony/debug	

symfony...
Autres packages
•
•
•
•
•

classpreloader/classpreloader	

doctrine/dbal	

ircmaxell/password-compat	

filp/whoops	

monolo...
Composants Illuminate
Auth, Cache, Config, Console, Container, Cookie, Database, Encryption,
Events, Exception, Filesystem,...
Laravel: planning
Ressemble au planning de sortie de Symfony	


•

4.0 - Mai 2013	


•

4.1 - Novembre 2013	


•

4.2 - Ma...
Mettre à jour Laravel
•
•

Dans terminal: ‘composer update’	

DONE

Introduction à Laravel 4
Ressources
•
•
•

Docs: http://laravel.com/docs/	

Laracasts: https://laracasts.com/	

Forum: http://forums.laravel.io/

I...
Ressources: eBooks
•

Code Bright : https://leanpub.com/codebright

Introduction à Laravel 4
Ressources: eBooks
•

Laravel: From Apprentice To Artisan : https://leanpub.com/laravel

Introduction à Laravel 4
Ressources: eBooks
•

Laravel Testing Decoded : https://leanpub.com/laravel-testing-decoded

Introduction à Laravel 4
Merci.

Introduction à Laravel 4
Prochain SlideShare
Chargement dans…5
×

Introduction à Laravel 4 @Dogstudio

1 677 vues

Publié le

A 2h introduction into the laravel 4 framework in french.

Publié dans : Technologie
1 commentaire
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
1 677
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
71
Commentaires
1
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Introduction à Laravel 4 @Dogstudio

  1. 1. Introduction à Laravel 4
  2. 2. Concepts de base • • • • PHP 5 >= 5.3.0 Composer RESTful Testable Introduction à Laravel 4
  3. 3. getcomposer.org Introduction à Laravel 4
  4. 4. Composer • • • • packagist.org Packages réutilisables Gérer facilement les dépendences des applications Très facile à utiliser Introduction à Laravel 4
  5. 5. Installation • • Composer Laravel phar Introduction à Laravel 4
  6. 6. Installation Composer Laravel Phar Introduction à Laravel 4
  7. 7. Introduction à Laravel 4
  8. 8. Le composer.json de Laravel Introduction à Laravel 4
  9. 9. • • • • • Quelques fonctionnalités de Laravel Routage facile d’utilisation Authentification ‘built-in’ Syntaxe de template Blade Migrations Eloquent ORM Introduction à Laravel 4
  10. 10. Routage / Routing • • • • Closures Actions de controlleur Controlleurs RESTful Controlleurs ressourceful Introduction à Laravel 4
  11. 11. Route avec closure Introduction à Laravel 4 https://gist.github.com/nWidart/6334183
  12. 12. Route vers action controlleur Introduction à Laravel 4 https://gist.github.com/nWidart/6334237
  13. 13. Route vers controlleur RESTful Introduction à Laravel 4 https://gist.github.com/nWidart/6335300
  14. 14. Route vers controlleur resource Introduction à Laravel 4 https://gist.github.com/nWidart/6335333
  15. 15. Route groups Introduction à Laravel 4
  16. 16. Route filters Introduction à Laravel 4
  17. 17. Route filters Introduction à Laravel 4
  18. 18. Route filters Introduction à Laravel 4
  19. 19. Sécuriser les routes Introduction à Laravel 4
  20. 20. Secure route groups Introduction à Laravel 4
  21. 21. Routes Fonctions “avancées”
  22. 22. Paramètres optionels Route::get('user/{name?}', function($name = 'Kai') { return $name; }); Introduction à Laravel 4
  23. 23. Contraintes regex Route::get('user/{name}', function($name) { // }) ->where('name', '[A-Za-z]+'); Introduction à Laravel 4
  24. 24. Contraintes regex Route::get('user/{name}', function($name) { // }) ->where('name', '[A-Za-z]+'); Route::get('user/{id}', function($id) { // }) ->where('id', '[0-9]+'); Introduction à Laravel 4
  25. 25. Contraintes regex Route::get('user/{id}/{name}', function($id, $name) { // }) ->where(array('id' => '[0-9]+', 'name' => '[a-z]+')) ! Introduction à Laravel 4
  26. 26. Authentification
  27. 27. Authentification Introduction à Laravel 4
  28. 28. Views
  29. 29. Views (blade) Introduction à Laravel 4
  30. 30. Définir des layouts blade Introduction à Laravel 4
  31. 31. Utiliser les blade layouts Introduction à Laravel 4
  32. 32. Environements
  33. 33. Environements Introduction à Laravel 4
  34. 34. Environements Introduction à Laravel 4
  35. 35. Artisan
  36. 36. Artisan • • • • • CLI pour laravel Basé sur le composant Symfony/Console Utilisé pour des tâches régulières comme les migrations Offre des helpers pour génération de code Sait être étendu Introduction à Laravel 4
  37. 37. Quelques commandes Artisan Introduction à Laravel 4
  38. 38. Mode de maintenance Introduction à Laravel 4
  39. 39. Migrations
  40. 40. Migrations • • • • Gestions de versions pour la DB Unique par timestamp Construction & édition du layout DB Révenir vers des structures ultérieures Introduction à Laravel 4
  41. 41. Migrations Introduction à Laravel 4
  42. 42. Schema builder Introduction à Laravel 4
  43. 43. Schema builder Introduction à Laravel 4
  44. 44. Exécuter les migrations Introduction à Laravel 4
  45. 45. Query builder
  46. 46. Query builder Introduction à Laravel 4
  47. 47. Query builder Introduction à Laravel 4
  48. 48. Eloquent ORM
  49. 49. Eloquent ORM • • • • • Basé sur ActiveRecord de Rails Query scoping Rends la définition de relations ultra facile Events de modèle Beaucoup plus... Introduction à Laravel 4
  50. 50. Basic Eloquent model Introduction à Laravel 4
  51. 51. CRUD avec Eloquent Introduction à Laravel 4
  52. 52. Query Builder vs Eloquent Introduction à Laravel 4
  53. 53. Query Scopes Introduction à Laravel 4
  54. 54. Relations dans Eloquent • • • • One to one One to many Many to many Polymorphic Introduction à Laravel 4
  55. 55. One to One Introduction à Laravel 4
  56. 56. One to One: inverse Introduction à Laravel 4
  57. 57. One to One: inverse Introduction à Laravel 4
  58. 58. One to Many class Post extends Eloquent { ! public function comments() { return $this->hasMany('Comment'); } ! } $comments = Post::find(1)->comments; Introduction à Laravel 4
  59. 59. One to Many: inverse class Comment extends Eloquent { ! public function post() { return $this->belongsTo('Post'); } ! } $post = Comment::find(1)->post; Introduction à Laravel 4
  60. 60. Many to Many class User extends Eloquent { ! public function roles() { return $this->belongsToMany('Role'); } ! } $roles = User::find(1)->roles; Introduction à Laravel 4
  61. 61. Polymorphic class Staff extends Eloquent { class Photo extends Eloquent { ! ! public function imageable() { return $this->morphTo(); } public function photos() { return $this->morphMany('Photo', 'imageable'); } ! ! } } class Order extends Eloquent { ! public function photos() { return $this->morphMany('Photo', 'imageable'); } ! } Introduction à Laravel 4
  62. 62. Polymorphic staff id - integer name - string ! orders id - integer price - integer ! photos id - integer path - string imageable_id - integer imageable_type - string Introduction à Laravel 4
  63. 63. Polymorphic: récupérer la relation $staff = Staff::find(1); ! foreach ($staff->photos as $photo) { // } Introduction à Laravel 4
  64. 64. Polymorphic: récupérer le owner $photo = Photo::find(1); ! $imageable = $photo->imageable; Introduction à Laravel 4
  65. 65. N+1 problem
  66. 66. N+1 Méthode traditionnelle Introduction à Laravel 4
  67. 67. N+1 Méthode traditionnelle 100 posts = 101 requêtes SQL SELECT * FROM “posts” foreach result { SELECT * FROM “users” WHERE “id” = 1 } Introduction à Laravel 4
  68. 68. Solution Eager Loading!
  69. 69. Solution Eager Loading Introduction à Laravel 4
  70. 70. Solution Eager Loading 100 posts = 2 requêtes SQL SELECT * FROM “posts” SELECT * FROM “users” WHERE “id” IN (1,2,3,4,…) Introduction à Laravel 4
  71. 71. JSON • Super facile de créer des APIs Introduction à Laravel 4
  72. 72. JSON Route::get('users', function() { return User::all(); }); Introduction à Laravel 4
  73. 73. JSON Route::get('users', function() { return User::all(); }); Introduction à Laravel 4
  74. 74. Validation
  75. 75. Validation $validator = Validator::make( array('name' => 'Nicolas'), array('name' => 'required|min:5') ); Introduction à Laravel 4
  76. 76. Validation $validator = Validator::make( array('name' => 'Nicolas'), array('name' => 'required|min:5') ); if ($validator->fails()) { // Validation pas passé } Introduction à Laravel 4
  77. 77. Validation // Récupérer les messages d’erreur ! $messages = $validator->messages(); Introduction à Laravel 4
  78. 78. Validation // Récupérer les messages d’erreur ! $messages = $validator->messages(); // Récupérer le premier message d’erreur d’un champ echo $messages->first('name'); Introduction à Laravel 4
  79. 79. Validation // Récupérer les messages d’erreur ! $messages = $validator->messages(); // Récupérer le premier message d’erreur d’un champ echo $messages->first('name'); Introduction à Laravel 4 // Toutes les erreurs foreach ($messages->all() as $message)
  80. 80. Validation // Récupérer les messages d’erreur ! // Toutes les erreurs foreach ($messages->all() as $message) $messages = $validator->messages(); // Toutes les erreurs d’un champ foreach ($messages->get('name') as $message) // Récupérer le premier message d’erreur d’un champ echo $messages->first('name'); Introduction à Laravel 4
  81. 81. Validation // Récupérer les messages d’erreur ! // Toutes les erreurs foreach ($messages->all() as $message) $messages = $validator->messages(); // Toutes les erreurs d’un champ foreach ($messages->get('name') as $message) // Récupérer le premier message d’erreur d’un champ echo $messages->first('name'); Introduction à Laravel 4 // Check si erreurs if ($messages->has('name'))
  82. 82. Validation: example Route::get('register', function() { return View::make('user.register'); }); ! Route::post('register', function() { $rules = array(...); ! $validator = Validator::make(Input::all(), $rules); ! if ($validator->fails()) { return Redirect::to('register')->withErrors($validator); } }); Introduction à Laravel 4
  83. 83. Ce n’est pas tout! • • • • • • Evènements Caching Queues Localisation Unit Tests Mailer Introduction à Laravel 4 • • • • • Pagination Formulaires & générateur HTML Gestion de sessions Logging Et des tonnes de choses en plus..
  84. 84. Symfony & Laravel • • • Symfony propose des composants stables et solides Release cycle prédéfini Couple parfait Introduction à Laravel 4
  85. 85. Symfony dans Laravel 3 • • symfony/console symfony/http-foundation Introduction à Laravel 4
  86. 86. Symfony dans Laravel 4 • • • • • • symfony/browser-kit symfony/console symfony/css-selector symfony/debug symfony/dom-crawler symfony/event-dispatcher Introduction à Laravel 4 • • • • • • symfony/finder symfony/http-foundation symfony/http-kernel symfony/process symfony/routing symfony/translation
  87. 87. Autres packages • • • • • classpreloader/classpreloader doctrine/dbal ircmaxell/password-compat filp/whoops monolog/monolog Introduction à Laravel 4 • • • • nesbot/carbon patchwork/utf8 predis/predis swiftmailer/swiftmailer
  88. 88. Composants Illuminate Auth, Cache, Config, Console, Container, Cookie, Database, Encryption, Events, Exception, Filesystem, Foundation, Hashing, HTML, Http, Log, Mail, Pagination, Queue, Redis, Routing, Session, Support, Translation, Validation,View, Workbench Introduction à Laravel 4
  89. 89. Laravel: planning Ressemble au planning de sortie de Symfony • 4.0 - Mai 2013 • 4.1 - Novembre 2013 • 4.2 - Mai 2014 • 4.3 - Novembre 2014 Introduction à Laravel 4
  90. 90. Mettre à jour Laravel • • Dans terminal: ‘composer update’ DONE Introduction à Laravel 4
  91. 91. Ressources • • • Docs: http://laravel.com/docs/ Laracasts: https://laracasts.com/ Forum: http://forums.laravel.io/ Introduction à Laravel 4
  92. 92. Ressources: eBooks • Code Bright : https://leanpub.com/codebright Introduction à Laravel 4
  93. 93. Ressources: eBooks • Laravel: From Apprentice To Artisan : https://leanpub.com/laravel Introduction à Laravel 4
  94. 94. Ressources: eBooks • Laravel Testing Decoded : https://leanpub.com/laravel-testing-decoded Introduction à Laravel 4
  95. 95. Merci. Introduction à Laravel 4

×