Componente String do Symfony 5.0

Andréia Bohner
3 min readDec 21, 2019

--

O Symfony 5.0 foi lançado em 21 de novembro de 2019. Ao contrário do Symfony 4.0, ele não altera completamente nenhuma estrutura de diretório nem adiciona nenhuma nova forma inovadora de desenvolvimento. Em vez disso, o Symfony 5 usa como base o Symfony 4 e fornece novos recursos para facilitar a vida.

De acordo com o processo de lançamento do Symfony, o Symfony 5.0 possui todos os novos recursos introduzidos no Symfony 4.4. Confira a série sobre as novidades no Symfony 4.4 para aprender sobre todos esses ótimos recursos. Além disso, o Symfony 5.0 adiciona alguns recursos exclusivos que não estão disponíveis no Symfony 4.4. Este post apresenta um desses recursos: o novo componente String.

Trabalhar com Strings é Difícil

Idiomas como o Inglês exigem um conjunto muito limitado de caracteres e símbolos para exibir qualquer conteúdo. No entanto, outros idiomas exigem milhares de símbolos para exibir seu conteúdo. Eles precisam de padrões complexos de codificação, como Unicode, e você precisa lidar com “pontos de código”, “clusters de grafema” e “bytes”. Leia a documentação do componente String para obter uma introdução sobre esses termos.

O componente String abstrai essa complexidade e fornece três classes simples para criar qualquer string de acordo com suas necessidades:

O componente também fornece algumas funções de atalho para criar strings rapidamente:

Strings Orientadas a Objetos

Criar strings é apenas o primeiro passo. Esse componente também fornece uma API cuidadosamente criada para trabalhar com strings de maneira orientada a objetos. Essa API pode tornar seu código muito mais legível. Veja, por exemplo, como verificar se uma string termina com outra substring:

Você pode encadear todos os métodos para executar transformações avançadas em strings (e com a certeza de que funcionará para qualquer string em qualquer idioma e script):

Se você trabalha com strings regularmente, o componente String é um sonho tornado realidade. O componente fornece dezenas de métodos para resolver todas as suas necessidades relacionadas à strings: search, replace, append, prepend, pad, trim, split, truncate, etc.

Alguns desses métodos resolvem problemas notavelmente complexos. Imagine que a sua aplicação suporta idiomas diferentes e você precisa fazer comparações case-insensitive. Aplicar strtolower() ou mb_strtolower() antes de fazer a comparação não funcionará em alguns idiomas. Por quê? Como os idiomas definem três casos ( lower, upper, title), alguns caracteres não têm case, o case é sensitivo ao contexto e sensitivo a localização, etc.

O Symfony abstrai essa complexidade em um único método chamado folded(), que sempre retorna o valor correto para fazer comparações case-insensitive:

Reserve um momento para verificar a referência dos métodos do componente String e você começará a usá-lo em seus projetos imediatamente!

Slugger de String

Sluggers são uma necessidade popular para muitas aplicações. Eles pegam qualquer string e as transformam em outra string que pode ser usada com segurança em locais onde nem todos os caracteres Unicode são permitidos (URLs, nomes de arquivos ou diretórios, etc.)

O componente String inclui um AsciiSlugger() que transforma e translitera qualquer string em outra string apenas ASCII:

Esse slugger fornece integração perfeita com o framework Symfony, para que você possa fazer autowire em seus serviços, detectar automaticamente a localização atual, etc.

Integração com o Twig

Às vezes, você também precisa lidar com strings em templates. É por isso que o Twig 2.12.1 adicionou um novo filtro chamado u, que envolve o conteúdo fornecido em uma classe UnicodeString para que você tenha acesso a todos os métodos String:

Esse filtro faz parte da StringExtension que não é instalada por padrão. Instale-a primeiro com composer require twig/string-extra e leia a documentação do filtro “u”.

Compatibilidade do Componente String

O componente String foi introduzido como um recurso experimental do Symfony no Symfony 5.0. Isso significa que é estável o suficiente para usá-lo em produção, mas sua API pública pode mudar um pouco antes de congelá-lo no Symfony 5.1.

Recursos experimentais não podem ser introduzidos em versões de suporte de longo prazo. É por isso que foi introduzido no Symfony 5.0 em vez do Symfony 4.4. De qualquer forma, você não precisa atualizar para o Symfony 5 para usar esse componente. O componente String está pronto para ser usado em qualquer aplicação que use o PHP 7.2.5 ou superior.

Tradução de: New in Symfony 5.0: String Component

--

--