Symfony 6 Vs 5, en este post veremos algunas novedades y mejoras de este framework, analizando el conjunto de cambios entre versiones
Symfony 6 Vs 5 – Novedades
A continuación realizamos una comparación con las características mas resaltantes, los cambios entre versiones se pueden apreciar en el curso
Sistema de Rutas en Symfony
Tenemos un cambio en las anotaciones empleando doctrine en symfony 6 la sintaxis es la siguiente
#[Route('/', name: 'client_index', methods: ['GET'])]
En la versión 5 de symfony las anotaciones son de la siguiente manera
/**
* @Route("/", name="client_index", methods={"GET"})
*/
Se puede apreciar un cambio entre símbolos entre # y * ademas de reducir lineas de código
Entidades en Symfony
Continuando con las anotaciones el orm ofrece algunos cambios, en la versión 6 tenemos
#[ORM\Column(type: 'string', length: 180, unique: true)]
private $email;
Y en su versión anterior se declaran propiedades de esta forma
/**
* @ORM\Column(type="string", length=180, unique=true)
*/
private $email;
De nuevo se puede apreciar que el código es mas reducido con la nueva sintaxis de las anotaciones
Symfony UserPasswordHasherInterface
Tenemos un cambio en la interfaz que utiliza symfony a la hora de encryptar contraseñas
En symfony 6 se agrega la siguiente sintaxis
private UserPasswordHasherInterface $hasher;
public function __construct(UserPasswordHasherInterface $hasher)
{
$this->hasher = $hasher;
}
En su versión anterior se realiza de la siguiente manera
private $passwordEncoder;
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder = $passwordEncoder;
}
Ademas ocurre un cambio en sus carpetas en la versión 6 se usaría la clase de esta forma use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; y en symfony 5 de esta forma use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
Symfony Security
También tenemos cambios en el archivo security.yaml, donde se gestiona el control de accesos entre otras cosas, en symfony 6 este seria un ejemplo de aplicación, donde se añade nueva lógica con palabras como when
when@test:
security:
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
algorithm: auto
cost: 4
time_cost: 3
memory_cost: 10
De nuevo un ejemplo con la versión anterior
security:
encoders:
App\Entity\User:
algorithm: auto
Webpack Encore Symfony
Tenemos en la versión 6 reglas mas estrictas a la hora de compilar en comparación a symfony 5 aplicando la función encore_entry_script_tags(‘app’), al usar el sistema de plantillas twig arrojaría el siguiente error unrecognized option when test under twig en cambio en la versión anterior no muestra el error al mantener la función en la vista