Daniele Barbaro
Daniele Barbaro
Classe 84, workaholic, inge, in eterna lotta per la conquista del mondo. Da ormai 10 anni ha fatto del PHP la sua arma di conquista.
Capire:
Daniele Barbaro
Il framework degli artigiani web
Laravel è un framework php sviluppato da Taylor Otwell come evoluzione/alternativa di CodeIgniter/Symfony.
Usa un pattern architetturale MVC e permette di avere un approccio logico e schematico di lavorare con il codice orientato agli oggetti.
Daniele Barbaro
Daniele Barbaro
Talk introduzione Laravel: https://bit.ly/2NL6LVY
Daniele Barbaro
PSR-2 coding std and the PSR-4 autoloading std.
Daniele Barbaro
Questo talk nasce dall'esigenza di capire, strutturare e affrontare al meglio la gestione delle notifiche in un progetto complesso evitando di perdere informazioni nella codebase .
Daniele Barbaro
Daniele Barbaro
Daniele Barbaro
Daniele Barbaro
Daniele Barbaro
composer create-project --prefer-dist laravel/laravel shop-notifications
composer require --dev barryvdh/laravel-debugbar
composer require --dev barryvdh/laravel-ide-helper
composer require --dev phpunit/phpunit
composer require --dev squizlabs/php_codesniffer
composer require --dev rap2hpoutre/laravel-log-viewer
composer require doctrine/dbal
composer require guzzlehttp/guzzle
composer require predis/predisPacchetti Base sviluppo:
Standards: https://bit.ly/2I2eA6h
Daniele Barbaro
composer require laravel/ui
php artisan ui:authLaravel offre un layer base di autenticazione e registrazione semplicemente con un comando
Costruzione entità base per il progetto
Creiamo migration, Model, Controller, la Factory, Seeder
Daniele Barbaro
php artisan make:model Product --allphp artisan make:request ProductRequest
php artisan make:observer ProductObserverCreiamo la request e l'observer
Daniele Barbaro
Gestiamo le requests dei controller in maniera efficiente
Decidiamo rules, auth e messages per gestire al meglio e in maniera atomica ogni singola richiesta
Daniele Barbaro
Isoliamo le notifiche e deleghiamo agli observer il lavoro
Mettendoci in ascolto sulle "azioni" created, updated dobbiamo scrivere in un solo punto le notifiche
Daniele Barbaro
<?php
namespace App\Observers;
use App\Models\Product;
use App\Notifications\ProductUpdatedNotification;
use Illuminate\Support\Facades\Notification;
class ProductObserver
{
/**
* Handle the product "created" event.
*
* @param Product $product
* @return void
*/
public function created(Product $product)
{
//
}
/**
* Handle the product "updated" event.
*
* @param Product $product
* @return void
*/
public function updated(Product $product)
{
//
}
}
Daniele Barbaro
Daniele Barbaro
ProductController:
public function __construct()
{
$this->middleware('auth')->except('index');
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return view('products.form');
}
/**
* Store a newly created resource in storage.
*
* @param ProductRequest $request
* @return RedirectResponse
*/
public function store(ProductRequest $request)
{
try {
$product = new Product();
$product->fill($request->validated())->save();
} catch (\Exception $exception) {
abort($exception->getCode(), $exception->getMessage());
}
return redirect()->route('products.index');
}
Daniele Barbaro
ProductController:
/**
* Show the form for editing the specified resource.
*
* @param Product $product
* @return View
*/
public function edit(Product $product)
{
return view('products.edit', [
'product' => $product
]);
}
/**
* Update the specified resource in storage.
*
* @param ProductRequest $request
* @param Product $product
* @return RedirectResponse
*/
public function update(ProductRequest $request, Product $product)
{
try {
$product->fill($request->validated())->save();
} catch (\Exception $exception) {
abort($exception->getCode(), $exception->getMessage());
}
return redirect()->route('products.index');
}Daniele Barbaro
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('products', 'ProductController')->only([
'create', 'store', 'update', 'index', 'edit'
]);Daniele Barbaro
Daniele Barbaro
Daniele Barbaro
php artisan make:test ForgotPasswordTest
php artisan make:test LoginTest
php artisan make:test RegisterTest
php artisan make:test ResetPasswordTest
php artisan make:test ProductUpdateNotificationTest
php artisan make:test PostNewProductTest
php artisan make:test UpdateProductTestDaniele Barbaro
Daniele Barbaro
Daniele Barbaro
Scrivimi a
barbaro.daniele@gmail.com
antani@iakta.it
Daniele Barbaro
https://github.com/danielebarbaro/shop-notifications
https://slides.com/danielebarbaro/laravel-push-notifications