https://a.storyblok.com/f/162428/1280x1262/96ce32308e/group-4-2.png

Symfony 5.2 e PHP 8: Alcune interessanti novità

Session Profiling

Symfony Profiler è un utilissimo strumento per debuggare correttamente le pagine web; ci permette di visualizzare informazioni come il numero di query al database, i tempi di risposta e ora (finalmente) anche le informazioni di sessione. Per informazioni: Articolo e Pull Request.

PHP 8 attributes

Ho parlato di alcune delle novità di PHP 8 in questo articolo sul nostro blog ma ho volutamente tralasciato una novità che si sposa benissimo con Symfony: gli attributi.
Solitamente infatti le informazioni quali le Route o le istruzioni su come costruire le tabelle per Doctrine vengono scritte nelle cosiddette annotation:

// BEFORE: annotations defined with Doctrine Annotations library

use Symfony\Component\Routing\Annotation\Route;

class SomeController

{

/**

* @Route("/path", name="action")

*/

public function someAction()

{

// ...

}

}

In questo esempio, il controller “SomeController” risponderà con la action “someAction” quando l’utente richiama la url “/path”; questa potrebbe essere una pagina web o una API.
In PHP8, con le nuove annotation, possiamo sostituire la Route, che diventerà così:

// AFTER: annotations defined with PHP 8 attributes

use Symfony\Component\Routing\Annotation\Route;

class SomeController

{

#[Route('/path', name: 'action')]

public function someAction()

{

// ...

}

}

La cosa più interessante è che, nelle prossime settimane, verrà aggiunto il supporto a tante altre annotation, tra cui la validazione. Per informazioni: Articolo e Pull Request 1 e 2.

Doctrine types for UUID and ULID

Una cosa che usiamo moltissimo sono gli UUID: queste sono stringhe alfanumeriche casuali (o pseudocasuali) che identificano in modo univoco un elemento; la cosa più interessante è la portabilità del dato da un sistema all’altro. Non si tratta infatti di valori AutoIncrementcome i classici ID di ogni Database.

Solitamente per generare questi UUID possiamo utilizzare due sistemi: usare i Polyfill o dei pacchetti come ramsey/uuid

In Symfony 5.2 avremo il supporto nativo e potremo quindi scrivere Entity in questo modo:

// src/Entity/Product.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**

* @ORM\Entity(repositoryClass="App\Repository\ProductRepository")

*/

class Product

{

/**

* @ORM\Column(type="uuid")

*/

private $someProperty;

/**

* @ORM\Column(type="ulid")

*/

private $anotherProperty;

// ...

}

Questo ci eviterà l’aggiunta di una nuova dipendenza al progetto e soprattutto renderà il tutto molto più leggibile. Per informazioni: Articolo e Pull Request

True colors in the console

Per concludere, una funzionalità prettamente “stilistica”, utile soprattutto quando si utilizza Symfony per creare comandi da utilizzare nella console: arriva il supporto ai colori 24-bit

// using a predefined style

$output->writeln('<info>... contents ...</>');

// custom style using basic colors

$output->writeln('<fg=green;bg=blue>... contents ...</>');

// custom style using true colors

$output->writeln('<fg=#00ff00;bg=#00f>... contents ...</>');

Per maggiori informazioni: Articolo e Pull Request.

Nelle prossime settimane sono certo che usciranno altre interessanti notizie! Restate sintonizzati.


Potrebbe interessarti...
Soluzioni software
Investimenti software: Credito di imposta fino al 2023
Soluzioni software
Docker: lo strumento ideale per programmare
Soluzioni software
Integrazioni hardware: una consulenza a 360 gradi