Your SlideShare is downloading. ×
0
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Intro to Laravel 4
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intro to Laravel 4

3,674

Published on

Speaker: Liang Anmian Benson …

Speaker: Liang Anmian Benson

http://laravel.com/

Video: http://www.youtube.com/watch?v=gPrdFrivrLo

Presented at: Singapore PHP User Group Meetup Oct 2013 Meetup

https://www.facebook.com/events/272874456170882/

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,674
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
199
Comments
0
Likes
8
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Introduction to Laravel 4 Benson Liang
  2. What will be discussed  Introduction  Installation  The MVC Layers  Authentication  IoC Container  Facade  Service Provider
  3. Introduction  The Creator  Objectives of Laravel  The Base  Closures  The Syntactic Sugar
  4. Introduction – The Creator Taylor Otwell .NET Developer
  5. Introduction – Objectives of Laravel  Get started on a project FAST  Fun to develop with  Promote S.O.L.I.D design patterns  Singe Responsibility Principle (SRP)  Open/Closed Principle (OCP)  Liskov Substitution Principle (LSP)  Interface Segregation Principle (ISP)  Dependency Inversion Principle (DIP)
  6. Introduction – The Base  Composer friendly  Symfony components  Swiftmailer  Monolog  ... and many more
  7. Introduction - Closures  Introduced in PHP 5.3  Anonymous functions  Useful for specifying callbacks Route::get( '/login', 'AuthController@showLoginForm' ); Route::get('/login', function() { return View::make('auth.loginForm'); });
  8. Introduction – The Syntactic Sugar  Easy to understand  Expressiveness and elegance Auth::attempt() Input::get() Cookie::make() Event::subscribe()
  9. Installation composer create-project laravel/laravel /web/laraveltest --no-dev --prefer-dist
  10. The MVC Layers ● Eloquent ORM ● Blade Engine ● Controller
  11. The MVC Layers – Eloquent ORM ● Active record style ● Easy to use class Book extends Eloquent { protected $table = 'book'; protected $primaryKey = 'book_id'; public $timestamps = false; }
  12. The MVC Layers – Eloquent ORM ● Some examples of queries: Book::all(); Book::find(1); Book::where('name', '=', 'Michael Cheng'); ● Insert / Update $b = new Book(); $b->title = 'Laravel Basics'; $b->description = 'A very nice book'; $b->save(); $b = Book::find(2); $b->title = 'Laravel Advanced'; $b->save();
  13. The MVC Layers – Eloquent ORM ● Relationship mapping public function author() { return $this->belongsTo('Author', 'author_id'); }
  14. The MVC Layers – Eloquent ORM ● Supports soft delete protected $softDelete = true; // Automatically excludes soft deleted rows Book::all(); // Include soft deleted rows Book::withTrashed()->get(); // Include only soft deleted rows Book::onlyTrashed()->get(); // Undo the soft delete $b = Book::withTrashed()->where('book_id, '=', 1); $b->restore();
  15. The MVC Layers – Eloquent ORM ● Supports query scope public function scopePopular($query) { return $query->where('rating', '>', '4'); } Book::popular()->get();
  16. The MVC Layers – Eloquent ORM ● Supports accessors and mutators // Accessor public function getGenderAttribute($value) { return ($value == 'm') ? 'Male' : 'Female'; } // Mutator public function setNameAttribute($value) { $this->attributes['name'] = strtolower($value); }
  17. The MVC Layers – Blade Engine ● Stock templating engine for Laravel ● Supports template inheritance and sections <html> <head> <title>@yield('page_title')</title> @yield('css') @yield('javascript') </head> <body> Some text @yield('content') </body> </html>
  18. The MVC Layers – Blade Engine @extends('layout') @section('page_title', 'Login Page') @section('css') <link rel="stylesheet" type="text/css" href="mystyle.css" /> @endsection @section('javascript') <script type='text/javascript' src='jquery.js'></script> @endsection @section('content') This is the content for a particular page. @endsection
  19. The MVC Layers – Blade Engine ● Some control structures @if (.....) .... @elseif .... @else .... @endif @unless (....) .... @endunless
  20. The MVC Layers – Blade Engine @for (....) .... @endfor @while (....) .... @endwhile @foreach (....) .... @endforeach
  21. The MVC Layers – Blade Engine ● Alternate way to echo variable values My name is <?php echo $user->name ?> My name is {{ $user->name }}
  22. The MVC Layers - Controller ● Basic controller // The controller itself class AuthController extends BaseController { public function showLoginForm() { return View::make('auth.loginForm'); } } // Routing file Route::get('/auth', 'AuthController@showLoginForm')
  23. The MVC Layers - Controller ● RESTful controller // The controller itself class BookController extends BaseController { public function getShowAll() { // .............. } public function postAdd() { // .............. } } // Routing file Route::controller('/books', 'BookController');
  24. The MVC Layers - Controller  Resource controller – Generated using Artisan CLI – Allows easy RESTful implementation
  25. The MVC Layers - Controller  Resource controller  Paths and route names are generated automatically Verb Path Action Route Name GET /resource index resource.index GET /resource/create create resource.create POST /resource/ store resource.store GET /resource/{id} show resource.show GET /resource/{id}/edit edit resource.edit PUT / PATCH /resource/{id} update resource.update DELETE /resource/{id} destroy resource.destroy
  26. The MVC Layers ● Simple demo
  27. Authentication ●  Allows easy implementation of user authentication for your application Supports multiple types of authentication  HTTP Basic  Application level
  28. Authentication – Application Level ● Many convenience methods // Attempt to login Auth::attempt(array('email' => $email, 'password' => $pwd)) // Check if the current user is logged in Auth::check(); // Access the logged in user $name = Auth::user()->name; // Manually login a user with its ID Auth::loginUsingId(1); // Log the user out Auth::logout();
  29. Authentication – Application Level  Uses Bcrypt as the default hashing algorithm, with a default workload of 8  Workload can be changed freely  Algorithm itself can be changed by framework extension // Workload 8 by default $hash = Hash::make('password'); // Change workload $hash = Hash::make('password', array('rounds' => 12));
  30. IoC Container     For managing class dependencies Promotes inversion of control by injecting dependencies at runtime Promotes greater flexibility by allowing dependency implementations to be swapped easily 2 ways for resolving types:  Closure  Automatic Resolution
  31. IoC Container  Closure App::bind('user_manager', function($app) { return new UserRepository(); }); // // // // ......... ......... ......... ......... $um = App::make('user_manager');
  32. IoC Container  Automatic Resolution class UserManager { private $repo; public function __construct(UserRepository $repo) { $this->repo = $repo; } } $u = App::make('UserManager');
  33. IoC Container  Automatic Resolution class UserManager { private $repo; public function __construct(UserRepositoryInterface $repo) { $this->repo = $repo; } } // Interface resolution App::bind('UserRepositoryInterface', 'DbUserRepository'); // Now we can use the IoC container to resolve the dependencies $u = App::make('UserManager');
  34. Facade ● ● Provides a static-like syntax to access objects and their methods in the IoC container These are facades in action, and they are NOT static method calls: Auth::attempt() Input::get() Cookie::make() Event::subscribe()
  35. Facade ● How does it work?  An object is registered into the IoC container  A facade is created to reference that object  An alias is defined to use the facade without importing its namespace
  36. Service Provider ● ● A great way to add reusable components into your application Custom authentication driver, database driver, support modules etc etc etc...
  37. Service Provider class MongoDBServiceProvider extends ServiceProvider { public function register() { $this->app->bind('mongodb', function() { return new MongoDbManager(); }); } } // Register the service provider App::register('MongoDBServiceProvider'); // Now you can use the Mongo DB manager $mongodb = App::make('mongodb'); $mongodb->connect(....); $mongodb->add(....);
  38. Tips For Learning Laravel ● ● Documentation is your best friend Read the API to discover features not mentioned in the documentation ● Get used to closures ● Learn the IoC container and service provider (MUST)

×