Symfony 6 Vs 5

Symfony 6 Vs 5

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