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

Extendiendo los campos personalizados o custom fields en WordPress
Extendiendo los campos personalizados o custom fields en WordPress
En una entrada anterior vimos cómo añadir campos personalizados o custom fields al back-end de WordPress de forma elegante, haciendo uso de meta_boxes para ordenar…
Añade la etiqueta meta description a tus páginas AMP
Añade la etiqueta meta description a tus páginas AMP
En este post vamos a ver cómo añadir la etiqueta meta description a nuestras páginas AMP. Concretamente, un ejemplo de cómo incluir la etiqueta meta…
Seguridad WordPress: permisos de archivos y carpetas
Seguridad WordPress: permisos de archivos y carpetas
La regla general nos dice que los permisos deben ser 755 para las carpetas y 644 para los archivos. Además recomendable poner el wp-config.php y…
Cómo añadir un botón para donaciones en tu plugin
Cómo añadir un botón para donaciones en tu plugin
En el artículo anterior vimos cómo añadir un enlace para los ajustes en el listado de plugins. En esta entrada vamos a ver cómo añadir…