La semana pasada, escribí sobre indicar al tipo, en PHP. La sugerencia de tipo hace que la intención de una función sea más clara y obliga a los valores a mostrar un cierto tipo de valor. Aunque una función que acepta solo un cierto tipo de valor elimina la necesidad de verificar el tipo de variable de la oficina, esto no significa que no tenga que verificar ese tipo antes de llamar. Pasar una variable de tipo incorrecta crea un error fatal. Por ejemplo, get_post_meta () puede devolver casi cualquier tipo de datos. Si lo usa de una manera que espera devolver una matriz, aún debe verificar si ha devuelto el resultado esperado. Por lo tanto, si tenía una función que requiere una matriz para uno de sus parámetros, debe verificar si ha recibido un resultado del tipo esperado de get_post_meta (), no falso u otro tipo.
Si pudiera construir una abstracción alrededor de get_post_meta () que se le garantiza que proporcionará una matriz, entonces podría transmitir el valor de retorno de forma segura a una función que requiere una matriz. En PHP5 podemos escribir funciones que siempre deberían devolver una matriz, pero no tenemos forma de declararla programáticamente como tal. Sí, la documentación en línea ayuda a las personas e ideas a saber qué esperar. Pero esto no ayuda al compilador y no garantiza los resultados. PHP7 presenta declaraciones de tipo de retorno que nos permiten hacer exactamente. Una declaración de tipo devuelta hace que el valor de retorno de una función de un tipo particular.
Ventajas y desventajas de las declaraciones de tipo de retorno Hay dos argumentos principales para usar declaraciones de tipo devueltas. El primero es el rendimiento, que se ve directamente afectado porque el tipo devuelto se declara explícitamente. Esto significa que el compilador PHP no tiene que darse cuenta, lo que, a su vez, hace que la compilación sea más rápida. El otro argumento para el uso de declaraciones de tipo devueltas es similar al de usar la indicación de tipo: hace que la intención y el uso esperado del código sea claro. Al igual que la sugerencia de tipo, pierde parte de la flexibilidad ofrecida por el uso de una lengua dinámica. Por lo tanto, debe decidir si vale la pena negociar esa flexibilidad para mayor claridad y posibles ganancias de rendimiento. Además, debido a que la indicación del tipo de retorno no es compatible con PHP5, aún no es una buena idea usarla en un complemento o un tema de WordPress que se lanzará públicamente. Incluso si debe construir verificaciones de versión, WordPress.org no permite que los complementos o los temas usen la sintaxis agregada a PHP 5.5 o más recientemente. Por otro lado, si trabaja en un sitio personalizado que ejecuta PHP7 y una función PHP7 como es útil para usted, ¿por qué no usarlo? Un ejemplo en la introducción de esta publicación discutimos temas relacionados con la suposición de que una función como get_post_meta () siempre devolverá un valor esperado. Incluso si siempre coloca una matriz en una meta clave en particular, ¿qué sucede si no se han establecido datos para una determinada publicación o si intenta obtener el meta post para una publicación inexistente?
Si su objetivo es usar un valor meta post con una función que requiere una matriz, en PHP5 se ve obligado a probar el valor devuelto por get_post_meta () cada vez. En PHP7, puede escribir una abstracción alrededor de get_post_meta () que no solo aseguró que siempre recibirá una matriz, sino que la hizo explícitamente a través de declaraciones de tipo de retorno. Aquí hay un ejemplo de una clase que hace exactamente esto: post = $ post;
}
Función pública get_all (): matrix {
return get_post_meta ($ this-> post-> id);
}
Función pública get_key ($ met_key) {
$ meta = get_post_meta ($ this-> post-> id, $ meta_key);
if (! is_array ($ meta) &&! vacía ($ meta)) {
devolver [$ meta];
} Elseif (vacía ($ meta)) {
devolver [];
}de lo contrario{
devuelve $ meta;
}
}
}
Como puede ver, tenemos dos métodos aquí que siempre devolverán una matriz. Esto es obvio para nosotros como personas que leen el código, si conocemos la nueva sintaxis. También generará menos código, no se requiere código de verificación de tipo adicional, y será más rápido analizar para el compilador PHP. Una nueva indicación de tipo de sintaxis utiliza una nueva sintaxis que no es compatible con PHP5. Aquí hay un ejemplo básico de esta sintaxis: <? Php
Función Total_Posts (WP_Query $ Query): int {

Recuento de retorno ($ consulta-> publicaciones);
} En PHP5, esto generaría un error fatal con este mensaje:
Error de análisis: error de sintaxis, inesperado “:”, esperando “{” En PHP7, se interpreta como una declaración de tipo devuelta. Debido a que la declaración es “int”, esta función debe devolver un entero o causará un error. Aquí hay un ejemplo, que utiliza las declaraciones de tipo y tipo devueltas para hacer que una API Simple Customer Rest WordPress: root = $ wp_root;
}
Consulta de funciones públicas (int $ página) {
$ Headers = Array (‘Acept’ => ‘Application/Json’);
$ request = requests :: get ($ this-> root. ‘Posts/’, $ Heads, [‘Page’ => $ Page]);
$ this-> posts = json_decode ($ request-> body);
}
Función pública get_total_posts (): int {
if (vacía ($ this-> publica) ||! is_array ($ this-> publica)) {
devuelve 0;
}
recuento de retorno ($ this-> publicaciones);
}
Función pública get_posts (): matrix {
devuelve $ this-> publicaciones;
}
} Los dos últimos métodos en esta clase usan declaraciones de tipo devueltas. El método get_total_count () utiliza una instrucción INT de tipo y, por lo tanto, tiene que devolver un entero, mientras que el método get_posts () utiliza una instrucción de retorno de matriz y, por lo tanto, debe devolver una matriz.
Tenga en cuenta que este ejemplo usa la biblioteca de solicitudes, que se incluye en WordPress 4.6 o en una versión posterior. ¿Debería usar declaraciones de tipo de retorno? PHP se ha vuelto tan popular debido a lo flexible y relativamente fácil que es aprender. Muchos de estos se deben a la flexibilidad ofrecida por el tipo dinámico. Pero esta flexibilidad tiene un rendimiento de PHP limitado. PHP alimenta algunos de los sitios más traficados en Internet: WordPress.com, Facebook, Wikipedia, Etsy y muchos más. Las nuevas convenciones de idiomas que hacen que PHP sea menos flexible, pero se necesitan más desempeños para hacer frente a los desafíos relacionados con el uso de PHP en esa escala. WordPress es genial por lo que puede hacer en un servidor pequeño. Cuanto más eficiente sea nuestro código, menos servidor necesitaremos y este es un gran problema en el mundo de WordPress, donde se espera que el código se ejecute en compartir y empresarial. Nuestro lenguaje madura y lo que podemos hacer con él es muy interesante. Espero que este artículo lo inspire a crear un sitio web de WordPress con PHP7 en su computadora y comenzar a aprender estas nuevas características interesantes. No son difíciles, pero si desea mejorar el rendimiento de su sitio y estar preparado para WordPress, esperamos que una posible transición para adoptar características no compatibles con PHP7, que aprende declaraciones de retorno PHP7, sea esencial.
Una introducción a las declaraciones de tipo de regreso en PHP7
Tags Una introducción a las declaraciones de tipo de regreso en PHP7
homefinance blog