Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Laravel Introduction
1.
2. whoami
• Ahmad Shah Hafizan Hamidin
• 27 years old
• Been developing for > 7 years
• Laravel & Orchestra fanboy
• https://www.github.com/ahmadshah
• @penjajah
• kuasamalaya
5. 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!
6. What do we need?
• A webserver (Apache2/NGINX)
• PHP 5.4 or above
• Database engines (MySQL/PostgreSQL/MSSQL)
• PHP mcrypt extension
• Composer
8. 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
9.
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
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
Route with 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
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
Route with view!
Route::get(‘foobar’, function () {
return View::make(‘foobar’);
});
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
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
30. 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!
31. SOLID Principles
Interface Segregation 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