Dotenv

Symfony 5.2 e PHP 8: alcune interessanti novità

Stanno uscendo, proprio in questi giorni, sul blog di Symfony interessanti articoli sulle nuove funzionalità della versione 5.2; in DotEnv siamo molto attenti a queste notizie in quanto utilizzatori abituali delle ultime versioni dei software.

Nel caso di Symfony solitamente si rilasciano sempre versioni fino alla .4 (quindi, in questo caso, la 5.4) che diventerà la LTS (Long Term Support) per poi passare alla versione 6; fino alla 5.4 è quindi lecito aspettarsi nuove funzionalità oltre alla consueta sistemazione di bug. Maggiori informazioni sul ciclo di rilascio di Symfony, le trovi di seguito.

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

Abbiamo parlato di alcune delle novità di PHP 8 in questo articolo sul nostro blog ma abbiamo 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 SymfonyComponentRoutingAnnotationRoute;

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 SymfonyComponentRoutingAnnotationRoute;

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 utilizziamo 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 AppEntity;

use DoctrineORMMapping as ORM;

/**

* @ORMEntity(repositoryClass="AppRepositoryProductRepository")

*/

class Product

{

/**

* @ORMColumn(type="uuid")

*/

private $someProperty;

/**

* @ORMColumn(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 siamo certi che usciranno altre interessanti notizie!

Restate sintonizzati.