laravel introduction
DESCRIPTION
Introduction to Laravel 4 frameworkTRANSCRIPT
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
Eloquent, Blade and ControllerM V C
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 RoutesRoute 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 Illuminate\Routing\Controller 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 BladeMaster 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 Illuminate\Database\Eloquent\Model
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 PrinciplesSingle 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 PrinciplesInterface 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