Symfony2: Clases Utils

Las clases Utils son típicas en cualquier proyecto, se utilizan para realizar tareas que se repiten, reutilizar código y suelen estar formadas por un conjunto de métodos estáticos. En este artículo veremos algunas clases utils que tiene Symfony2, en concreto la versión 2.3 y que podemos usar en nuestro proyecto.

IpUtils

Esta clase está dentro del componente HttpFoundation y ofrece 3 métodos para validar IPs:

  • checkIp($requestIp, $ips): Este método recibe una IP y una lista o rango de IPs y comprueba si esa IP está dentro de las IPs o del rango.
  • checkIp4($requestIp, $ip): Valida que una IPv4 con otra.
  • checkIp6($requestIp, $ip): Valida que una IPv6 con otra.

Estos ejemplos están sacados de IpUtilsTest.php

XmlUtils

XmlUtils es una clase que proporciona varios métodos estáticos para trabajar con XML:

  • loadFile($file, $schemaOrCallable = null): Recibe el path de un fichero y opcionalmente un callable o la ruta a un XSD schema y devuelve un objeto de tipo \DomDocument.
  • convertDomElementToArray(\DomElement $element, $checkPrefix = true): Convierte un \DomElement en un array PHP.
  • phpize($value): Convierte un valor de XML a un valor en PHP.

En el fichero de test se pueden ver ejemplos.

ProcessUtils

Esta clase surge para arreglar un bug en la función escapeshellarg en windows:

  • escapeArgument($argument): Este método escapa un string para ser usado como argumento del intérprete de comandos.

ClassUtils

ClassUtils sólo tiene un método:

  • getRealClass($object): Es posible que a veces se creen objetos proxy en lugar de nuestros propios objetos para por ejemplo cargar los atributos bajo demanda, este método lo que hace es dado un objeto devuelve el nombre real de la clase, comprobando si es un objeto proxy.

StringUtils

Esta clase ya se mencionó en el blog de Symfony.

  • equals($knownString, $userInput): El método compara dos strings en un tiempo constante, evitando Timing attacks.

SecureRandom

Al igual que StringUtils, se comentó en un artículo del blog de Symfony, esta clase hay que instanciarla.

SecureRandom nos permite obtener strings aleatorios a través del método nextBytes.

StringUtil

Esta clase está dentro del componente PropertyPath y tiene el siguiente método:

  • singularify($plural): Devuelve el singular de una palabra, en inglés y si no es capaz de tener un único singular, devuelve un array de posibles singulares.