laravel introduction

Post on 01-Dec-2014

342 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introduction to Laravel 4 framework

TRANSCRIPT

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

top related