Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
php

Declara strict types en tus ficheros PHP

Desde la versión 7 de PHP tenemos disponible la directiva strict_types. Esto nos permite declarar el modo estricto para tipos escalares en un archivo de PHP. No en toda la aplicación, tema o plugin… únicamente en el archivo donde se declare.

Declarar strict types en nuestros ficheros PHP, forzará a que nuestros métodos acepten variables únicamente del tipo exacto que se declaren. En caso contrario lanzará un TypeError.

Esto nos permitirá que nuestro desarrollo sea más robusto, y que nuestros métodos no se traguen cualquier cosa. También se puede aplicar para el retorno, es decir, si un método tiene que devolver una cadena, se forzará a que siempre sea así… si sucede algo entre medias y devuelve un entero o un array… obtendremos un TypeError.

Si obtenemos un TypeError querrá decir que nuestro método en algún punto ha hecho algo que no teníamos contemplado, y está devolviendo un valor que no queremos, o está recibiendo algún argumento de un tipo diferente al que esperamos.

Lo «malo» de todo esto, es que si queremos que nuestra aplicación sea estricta y robusta, tendremos que declarar el modo estricto en todos los archivos PHP de nuestro desarrollo.

Importante, la declaración de strict_types debe hacerse en la primera línea, nada más abrir PHP:

Y los tipos que podemos declarar son los siguientes:

array

 
function foo(array $bar)PHP 5.1+
function foo(array $bar = null)PHP 5.1+
function foo(): arrayPHP 7.0+
function foo(): ?arrayPHP 7.1+

bool

 
function foo(bool $bar)PHP 7.0+
function foo(bool $bar = null)PHP 7.0+
function foo(): boolPHP 7.0+
function foo(): ?boolPHP 7.1+

callable

 
function foo(callable $bar)PHP 5.4+
function foo(callable $bar = null)PHP 5.4+
function foo(): callablePHP 7.0+
function foo(): ?callablePHP 7.1+

float

 
function foo(float $bar)PHP 7.0+
function foo(float $bar = null)PHP 7.0+
function foo(): floatPHP 7.0+
function foo(): ?floatPHP 7.1+

int

 
function foo(int $bar)PHP 7.0+
function foo(int $bar = null)PHP 7.0+
function foo(): intPHP 7.0+
function foo(): ?intPHP 7.1+

iterable

 
function foo(iterable $bar)PHP 7.1+
function foo(iterable $bar = null)PHP 7.1+
function foo(): iterablePHP 7.1+
function foo(): ?iterablePHP 7.1+

object

 
function foo(object $bar)PHP 7.2+
function foo(object $bar = null)PHP 7.2+
function foo(): objectPHP 7.2+
function foo(): ?objectPHP 7.2+

self

 
function foo(self $bar)PHP 5.0+
function foo(self $bar = null)PHP 5.1+
function foo(): selfPHP 7.0+
function foo(): ?selfPHP 7.1+

string

 
function foo(string $bar)PHP 7.0+
function foo(string $bar = null)PHP 7.0+
function foo(): stringPHP 7.0+
function foo(): ?stringPHP 7.1+

class names

 
function foo(ClassName $bar)PHP 5.0+
function foo(ClassName $bar = null)PHP 5.1+
function foo(): ClassNamePHP 7.0+
function foo(): ?ClassNamePHP 7.1+

void

 
function foo(): voidPHP 7.1+
 

Al declarar strict_types, las propias funciones de PHP también se rigen por el modo estricto, por lo tanto generarán TypeError si no reciben los parámetros tal y cómo los esperan, en lugar de emitir un warning.

Pues ya no tienes excusa para crear tus desarrollos de una manera más robusta y fiable 😉

Puede que también te interese

Logo de tema, nueva característica en WordPress 4.5
Logo de tema, nueva característica en WordPress 4.5
WordPress 4.5, entre otras mejoras y resolución de incidencias y vulnerabilidades, introduce una nueva característica para agregar un logo de tema de forma nativa. Ya…
He olvidado, perdido o borrado mi usuario o contraseña, o ambos
He olvidado, perdido o borrado mi usuario o contraseña, o ambos
A quien no le ha ocurrido alguna vez que nos hemos olvidado o perdido nuestro usuario o contraseña, o ambos para acceder a un sitio…
Porqué y cómo cambiar el permalink de Autor en WordPress
Porqué y cómo cambiar el permalink de Autor en WordPress
WordPress posee una estructura de enlaces amigables optimizada para el SEO. De este modo nos permite tener enlaces del tipo www.misitio.com/quienes-somos/ en lugar de www.misitio.com/?id=7.…
Archivo wp-config.php para diferentes entornos
Archivo wp-config.php para diferentes entornos
Local, desarrollo, pre-producción, producción… entornos de desarrollo habituales en cualquier proyecto web. Entornos con características diferentes, configuraciones diferentes, distintos usuarios de base de datos, distintos…