Framework sì o framework no?
Direi proprio di sì! In questa presentazione faccio una panoramica di quello che è un web framework, cosa offre e quali sono i vantaggi.
1 of 19
Download to read offline
More Related Content
Accelera lo sviluppo con il web framework! Componenti a supporto dello sviluppatore
2. Tsuneo Kurihara
Senior Lead Software Engineer
baasbox.com
Missione
Studiare e realizzare soluzioni software che possano
durare nel tempo
Consiglio #1
Osserva, e cerca di capire cosa si può migliorare
Consiglio #2
Prima di chiedere agli altri capisci se sei in grado di
farlo tu
Consiglio #3
Se sei in difficoltà chiedi aiuto agli altri
3. Framework
baasbox.com
Definizione
termine inglese che indica:
- una struttura di supporto intorno alla quale può
essere costruito qualcosa
- un sistema di regole, idee e pratiche utilizzato
per pianificare oppure decidere qualcosa
4. Framework
baasbox.com
In informatica
Un'architettura logica di supporto (spesso
un'implementazione logica di un particolare design
pattern) sulla quale un software può essere progettato
e realizzato, spesso facilitandone lo sviluppo da
parte del programmatore.
5. Framework
baasbox.com
In informatica
Un'architettura logica di supporto (spesso
un'implementazione logica di un particolare design
pattern) sulla quale un software può essere progettato
e realizzato, spesso facilitandone lo sviluppo da
parte del programmatore.
Don't Repeat Yourself! (DRY)
6. Caratteristiche Web Application
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
7. Caratteristiche Web Application
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
Microframework
8. Framework
baasbox.com
- Routing
- Web Services
- Accesso al DB e ORM
- Autenticazione e Autorizzazione
- Web Template System
- Cache
- Mail
- Queue
- Task Scheduling
- ...
9. Routing
Associare un path ad una funzione
Web Services
Dato una richiesta (input), restituire la risposta (output)
Routing e Web Services
baasbox.com
$router->get('user/{id}', function ($id) {
return 'User '.$id;
});
$name = $request->input('name');
$request->has('name')
$request->file('photo');
return response($content)
->header('Content-Type', $type);
return response()->json([
'name' => 'Abigail',
'state' =>'CA'
]);
10. Middleware
Intercetta le richieste ed applica delle logiche prima di
elaborare le risposte
Routing e Web Services
baasbox.com
public function handle($request, Closure $next)
{
if ($request->input('age') <= 200) {
return redirect('home');
}
return $next($request);
}
11. Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
12. Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
ORM (Object-Relational Mapping)
- Componente che traduce i dati di un database in
un modello logico in memoria
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
13. Query Builder
- traduce il codice in query
- aiuta a prevenire SQL Injection
ORM (Object-Relational Mapping)
- Componente che traduce i dati di un database in
un modello logico in memoria
- supporta costrutti logici come le relazioni
Accesso al DB e ORM
baasbox.com
$users = DB::table('users')
->where('votes', '=', 100)
->where('age', '>', 35)
->get();
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
public function phone()
{
return $this->hasOne(Phone::class);
}
$phone = User::find(1)->phone;
14. Autenticazione
- validazione delle credenziali e gestione di una
sessione (o generazione di un token)
- gestione del flusso di registrazione (anche con il
supporto di un'interfaccia grafica)
- libreria per l'accesso ai dati dell'utente
Autorizzazione
- restringere l'accesso alle risorse a determinati
gruppi di utenti
Autenticazione e Autorizzazione
baasbox.com
$user = Auth::user();
Route::get('/flights', function () {
// Only admin users may access this route…
})->middleware('auth:admin');
15. Un sistema per renderizzare pagine web da
template
- sistema di template modulare e con logica
- chiamate per caricare i template e passare i dati
Web Template System
baasbox.com
Route::get('/', function () {
return view('welcome', ['name' => 'Samantha']);
});
<p>Hello {{ $name }}!</p>
16. Esempio di template a componenti con logica
Web Template System
baasbox.com
<html>
<head>
<title>
{{ $title ?? 'Todo Manager' }}
</title>
</head>
<body>
<h1>Todos</h1>
<hr/>
{{ $slot }}
</body>
</html>
Layout
<x-layout>
<x-slot name="title">
Custom Title
</x-slot>
@foreach ($tasks as $task)
{{ $task }}
@endforeach
</x-layout>
Content
17. Ecosistema
baasbox.com
Community
- utenti che utilizzano il framework
- parla la stessa "lingua" (stesse librerie)
- maggiore informazioni in rete
- maggiore supporto
- sviluppatori che possono collaborare sin
da subito nei progetti
- crea librerie che risolvono problemi ricorrenti
- quelli più influenti vengono inglobati nel
framework
18. Ecosistema
baasbox.com
Community
- utenti che utilizzano il framework
- parla la stessa "lingua" (stesse librerie)
- maggiore informazioni in rete
- maggiore supporto
- sviluppatori che possono collaborare sin
da subito nei progetti
- crea librerie che risolvono problemi ricorrenti
- quelli più influenti vengono inglobati nel
framework
È un indicatore del successo di un framework!