whoami 
• Ahmad Shah Hafizan Hamidin 
• 27 years old 
• Been developing for > 7 years 
• Laravel & Orchestra fanboy 
• https://www.github.com/ahmadshah 
• @penjajah 
• kuasamalaya
So What is Laravel?
+ +
Why so many Laravel? 
laravel/laravel! 
The framework structure and boilerplate codes 
! 
laravel/framework! 
The core of laravel framework or the kernel 
! 
Illuminate 
The namespace for every laravel framework 
components!
What do we need? 
• A webserver (Apache2/NGINX) 
• PHP 5.4 or above 
• Database engines (MySQL/PostgreSQL/MSSQL) 
• PHP mcrypt extension 
• Composer
Composer! 
• Remember PEAR? 
• Awesome PHP package management 
• Making developer lives easier 
• Manage application dependencies 
• http://getcomposer.org/ 
• http://packagist.com/
How to get Laravel?! 
via Laravel installer! 
> composer global require “laravel/installer=~1.1” 
> laravel new my-application 
! 
via Composer! 
> composer create-project laravel/laravel my-application
Laravel Setup 
• Make app/storage directory writable 
• Update public/.htaccess if you are using alias 
• Update app/config/database.php to connect 
to your database
M V C 
Eloquent, Blade and Controller
Laravel Routes 
• Handles the HTTP requests 
• GET, POST, PUT, PATCH, DELETE 
• All application routes are defined inside 
app/routes.php 
• Can accept Closures or controller 
namespace
Laravel Routes 
Route with Closure! 
Route::get(‘foobar’, function () { 
return ‘Welcome to FooBar!’; 
}); 
! 
Route with Controller! 
Route::get(‘foobar’, ‘FoobarController@index’);
Laravel Controllers 
• Handles the HTTP requests 
• GET, POST, PUT, PATCH, DELETE 
• Controllers are kept under app/controllers 
• Laravel naming convention: FoobarController 
• Extends IlluminateRoutingController class
Laravel Resourceful 
Controllers 
• Handles the HTTP requests 
• GET, POST, PUT, PATCH, DELETE 
• Predefine controller methods to handle 
the HTTP verbs 
• index, show, create, store, edit, 
update, and destroy
Laravel Resourceful! 
Controllers 
Route with Resource Controller! 
Route::resource(‘foobar’, ‘FoobarController’);
Laravel Views 
• The presentation layer of an application 
• Can accept either vanilla PHP or Blade 
files 
• View files are located under app/views 
directory 
• Can accept array arguments
Laravel Views 
Route with view! 
Route::get(‘foobar’, function () { 
return View::make(‘foobar’); 
});
Laravel Blade
Laravel Blade 
• Laravel default templating engine 
• Files need to use .blade.php extension 
• Driven by inheritance and sections 
• Extensible for adding new custom control 
structures
Laravel Blade 
Master layout! 
<!doctype html> 
… 
<body> 
@yield(‘content’) 
</body> 
</html> 
! 
Child layout! 
@extends(‘layout.master’) 
@section(‘content’) 
… 
@stop
Laravel Eloquent 
• Laravel ORM component 
• Simple ActiveRecord implementation 
• Each tables can be represented with a 
“Model” file 
• Model files are located under app/models 
directory 
• Extends IlluminateDatabaseEloquentModel 
class
Laravel Fluent 
• Laravel SQL query builder component 
• Write SQL query in a more elegant and readable 
way
Laravel Filters 
• Control the behaviour of a route 
• Process request before or after 
• Filters are located inside app/filters.php 
• Can be attached directly to route or controller 
• Can be in either Closure or filter class
Laravel Auth 
• Laravel user authentication component 
• Provide a basic functionalities to authenticate users 
• Does not come with ACL / RBAC 
• Utilizes app/models/User.php 
• Laravel does not come with a user table by default
Tinkering with the artisan
Laravel Artisan 
• Laravel CLI 
• Uses the Symfony Console component 
• Manage table migrations, seed tables, 
create resourceful controllers and many more 
• Developer best friend!
Service Providers & Facades
SOLID Principles 
Single Responsibility Principle! 
a class should have only one responsibility 
! 
Open/Closed Principle! 
open for extension and closed for modification 
! 
Liskov Substitution Principle 
Subtypes must be substitutable for their base types!
SOLID Principles 
Interface Segregation Principle! 
many client-specific interfaces are better 
! 
Dependency Inversion Principle! 
depends on abstraction 
! 
!
Laravel IOC 
• Inversion Of Control 
• Manages class dependencies 
• Based on dependency injection method 
• Dependencies are injected at run-time 
• Allowing dependencies to be easily swapped
Laravel Service Providers 
• Act like a component bootstrap 
• Group related IoC registrations in one place 
• Can also run other functionalities like 
artisan commands
Laravel Facades 
• Provide static interfaces to classes 
• Classes are resolved via IoC containers 
• Laravel is full with facades such as View, 
Cache, Config and others
Laravel Workbench 
• A tool to help develop laravel based components 
• Scaffold the necessary boilerplates 
• We do not commit/ship workbench directory

Laravel Introduction

  • 2.
    whoami • AhmadShah Hafizan Hamidin • 27 years old • Been developing for > 7 years • Laravel & Orchestra fanboy • https://www.github.com/ahmadshah • @penjajah • kuasamalaya
  • 3.
    So What isLaravel?
  • 4.
  • 5.
    Why so manyLaravel? laravel/laravel! The framework structure and boilerplate codes ! laravel/framework! The core of laravel framework or the kernel ! Illuminate The namespace for every laravel framework components!
  • 6.
    What do weneed? • A webserver (Apache2/NGINX) • PHP 5.4 or above • Database engines (MySQL/PostgreSQL/MSSQL) • PHP mcrypt extension • Composer
  • 7.
    Composer! • RememberPEAR? • Awesome PHP package management • Making developer lives easier • Manage application dependencies • http://getcomposer.org/ • http://packagist.com/
  • 8.
    How to getLaravel?! via Laravel installer! > composer global require “laravel/installer=~1.1” > laravel new my-application ! via Composer! > composer create-project laravel/laravel my-application
  • 10.
    Laravel Setup •Make app/storage directory writable • Update public/.htaccess if you are using alias • Update app/config/database.php to connect to your database
  • 11.
    M V C Eloquent, Blade and Controller
  • 12.
    Laravel Routes •Handles the HTTP requests • GET, POST, PUT, PATCH, DELETE • All application routes are defined inside app/routes.php • Can accept Closures or controller namespace
  • 13.
    Laravel Routes Routewith Closure! Route::get(‘foobar’, function () { return ‘Welcome to FooBar!’; }); ! Route with Controller! Route::get(‘foobar’, ‘FoobarController@index’);
  • 14.
    Laravel Controllers •Handles the HTTP requests • GET, POST, PUT, PATCH, DELETE • Controllers are kept under app/controllers • Laravel naming convention: FoobarController • Extends IlluminateRoutingController class
  • 15.
    Laravel Resourceful Controllers • Handles the HTTP requests • GET, POST, PUT, PATCH, DELETE • Predefine controller methods to handle the HTTP verbs • index, show, create, store, edit, update, and destroy
  • 16.
    Laravel Resourceful! Controllers Route with Resource Controller! Route::resource(‘foobar’, ‘FoobarController’);
  • 17.
    Laravel Views •The presentation layer of an application • Can accept either vanilla PHP or Blade files • View files are located under app/views directory • Can accept array arguments
  • 18.
    Laravel Views Routewith view! Route::get(‘foobar’, function () { return View::make(‘foobar’); });
  • 19.
  • 20.
    Laravel Blade •Laravel default templating engine • Files need to use .blade.php extension • Driven by inheritance and sections • Extensible for adding new custom control structures
  • 21.
    Laravel Blade Masterlayout! <!doctype html> … <body> @yield(‘content’) </body> </html> ! Child layout! @extends(‘layout.master’) @section(‘content’) … @stop
  • 22.
    Laravel Eloquent •Laravel ORM component • Simple ActiveRecord implementation • Each tables can be represented with a “Model” file • Model files are located under app/models directory • Extends IlluminateDatabaseEloquentModel class
  • 23.
    Laravel Fluent •Laravel SQL query builder component • Write SQL query in a more elegant and readable way
  • 24.
    Laravel Filters •Control the behaviour of a route • Process request before or after • Filters are located inside app/filters.php • Can be attached directly to route or controller • Can be in either Closure or filter class
  • 25.
    Laravel Auth •Laravel user authentication component • Provide a basic functionalities to authenticate users • Does not come with ACL / RBAC • Utilizes app/models/User.php • Laravel does not come with a user table by default
  • 26.
  • 28.
    Laravel Artisan •Laravel CLI • Uses the Symfony Console component • Manage table migrations, seed tables, create resourceful controllers and many more • Developer best friend!
  • 29.
  • 30.
    SOLID Principles SingleResponsibility Principle! a class should have only one responsibility ! Open/Closed Principle! open for extension and closed for modification ! Liskov Substitution Principle Subtypes must be substitutable for their base types!
  • 31.
    SOLID Principles InterfaceSegregation Principle! many client-specific interfaces are better ! Dependency Inversion Principle! depends on abstraction ! !
  • 32.
    Laravel IOC •Inversion Of Control • Manages class dependencies • Based on dependency injection method • Dependencies are injected at run-time • Allowing dependencies to be easily swapped
  • 33.
    Laravel Service Providers • Act like a component bootstrap • Group related IoC registrations in one place • Can also run other functionalities like artisan commands
  • 34.
    Laravel Facades •Provide static interfaces to classes • Classes are resolved via IoC containers • Laravel is full with facades such as View, Cache, Config and others
  • 35.
    Laravel Workbench •A tool to help develop laravel based components • Scaffold the necessary boilerplates • We do not commit/ship workbench directory