Ha pasado mucho tiempo, pero finalmente tenemos una nueva versión de PHP. Ofrece algunas nuevas y agradables funciones y mejoras, mientras que otras funciones se han eliminado o marcado como obsoleta..
Sumergámonos y echemos un vistazo a todo lo que ofrece la última versión..
En esta parte, voy a listar los cambios incompatibles hacia atrás; sin embargo, la mayoría de su código PHP5 funcionará en PHP 5.6 sin ninguna modificación.
Según la especificación JSON, json_decode ()
eliminará inmediatamente todas las variantes que no sean en minúsculas de los literales JSON como verdadero, falso y nulo. También se establecerá json_last_error ()
en consecuencia.
Si no está seguro de qué es GNU Multiple Precision (GMP) en PHP, le recomiendo que consulte este artículo en PHP.net. En PHP 5.6, los recursos GMP son objetos. No necesita realizar ningún cambio en su código existente a menos que esté verificando un recurso explícitamente usando is_resource ()
.
Todas las funciones de Mcrypt que esperan claves e IV no aceptarán claves o IV con tamaño incorrecto. Estas funciones incluyen mcrypt_encrypt ()
, mcrypt_decrypt ()
, mcrypt_cbc ()
, mcrypt_cfb ()
, mcrypt_ecb ()
, mcrypt_generic ()
, y mcrypt_ofb ()
.
Antes de PHP 5.6, cuando declaraba una matriz en la propiedad de clase con claves explícitas e implícitas, el valor de la matriz se sobrescribía en silencio cuando la clave explícita era la misma que una clave implícita secuencial.
clase helloWorld const ONE = 1; public $ array = [self :: ONE => 'Eclipse', 'Sublime', 'PHPStorm',]; $ hello = new helloWorld (); print_r ($ hola); // Antes de PHP 5.6 array ('Sublime', 'PHPStorm') // PHP 5.6 array ('Eclipse', 'Sublime', 'PHPStorm')
Con el lanzamiento de PHP 5.6, es posible proporcionar una expresión escalar que incluya literales numéricos y de cadena. En versiones anteriores de PHP, se esperaba que fuera un valor estático de argumentos de función constante y declaración de propiedad.
const ONE = 1; // Expresión escalar en constante constante TWO = ONE * 2; class helloWorld // Expresión escalar en propiedad const TRES = DOS + 1; // Expresión escalar en métodos public hello f ($ a = ONE + self :: THREE) return $ a; echo (new helloWorld) -> hello (). "\ n";
Antes estábamos usando func_get_args ()
para obtener todos los argumentos disponibles en una llamada de función, pero con PHP 5.6, esto puede eliminarse ya que podemos obtener fácilmente esa facilidad con el ...
operador.
function myTools ($ name,… $ tools) echo "Name:". $ nombre.
'; echo "My Tool Count:". contar (herramientas); myTools ('Avinash', 'Eclipse'); // Output: // Nombre: Avinash // My Tool Count: 1 myTools ('Avinash', 'Eclipse', 'Sublime'); // Output: // Nombre: Avinash // My Tool Count: 2 myTools ('Avinash', 'Eclipse', 'Sublime', 'PHPStorm'); // Resultado: // Nombre: Avinash // Mi cuenta de herramientas: 3
Podemos utilizar el mismo operador (...
) para desempaquetar cualquier argumento que sea una matriz o un conjunto de objetos Traversable.
function myTools ($ name, $ tool1, $ tool2, $ tool3) echo "Name:". $ nombre.
'; echo "Tool1:", $ tool1. '
'; echo "Tool2:", $ tool2. '
'; echo "Tool3:", $ tool3; $ myTools = ['Eclipse', 'Sublime', 'PHPStorm']; myTools ('Avinash', ... $ myTools); // Resultado: // Nombre: Avinash // Tool1: Eclipse // Tool1: Sublime // Tool1: PHPStorm
los **
Se ha agregado el operador para la exponenciación. Tenemos soporte para el operador de taquigrafía con la misma facilidad.
echo 2 ** 3; eco "
"; $ a = 2; $ a ** = 3; echo $ a; // Salida // 8 // 8
Tenga en cuenta que el orden de las operaciones entra en juego con este operador. Por favor, mire el siguiente ejemplo para una comprensión clara:
echo 2 ** 2 ** 4;
Se podría esperar que devuelva 256 como la agrupación sería como (2 ** 2) ** 4
, Pero ese no es el caso aquí. El resultado real sería 65,536, ya que la agrupación sería de derecha a izquierda y se analizará como 2 ** (2 ** 4)
.
Se ha agregado un depurador interactivo llamado phpdbg en PHP 5.6. Por favor visite el documento oficial para phpdbg.
Este depurador phpdbg se implementa como un módulo SAPI.
Un nuevo método mágico agregado en PHP 5.6 le permite cambiar las propiedades y los valores de un objeto cuando el objeto se genera utilizando var_dump ()
.
clase demoDebugInfo () private $ val; función pública __construct ($ val) $ this-> val = $ val; función pública __debuginfo () return ['iamchanged' => $ this-> val + 3; ]; $ debugInfo = new demoDebugInfo (50); // Obtendremos una matriz alterada que se devuelve mediante el método megic de __debuginfo. var_dump ($ debugInfo);
El conjunto de caracteres predeterminado para el htmlentities ()
, html_entity_decode ()
y htmlspecialchars ()
Las funciones se pueden configurar usando default_charset ().
Es posible subir un archivo de más de 2 GB..
php: // input se puede utilizar tantas veces como quiera leer datos. Esta característica ofrece una gran reducción en la memoria en comparación con la lectura. ENVIAR
datos.
los utilizar
Se ha ofrecido al operador para soportar la extensión de constantes y funciones. Esto se puede realizar utilizando el const
y el utilizar
funciones, respectivamente. Anteriormente este operador estaba limitado a la clase solamente.
Cuando intenta acceder de forma estática a un método no estático o a un método estático que utiliza un contexto de objeto, generará inmediatamente E_DEPRECATED
error.
class helloWorld () public static hiWorld () $ hello = new helloWorld (); $ hola-> hiWorld (); // Antes del error de PHP 5.6 E_STRICT // Del error de PHP 5.6 E_DEPRECATED
$ HTTP_RAW_POST_DATA
está en desuso ahora. Deberiamos estar usando php: // entrada
en lugar.
Con el lanzamiento de la default_charset ()
configuración, la opción relacionada está en desuso para iconv
y mbstring
.
Puede encontrar una lista de todas las funciones modificadas en PHP 5.6 en el último Manual de PHP.
Puede encontrar una lista de todas las funciones nuevas en PHP 5.6 en esta sección del Manual de PHP..
Mientras el equipo de PHP está trabajando en la próxima versión de PHP, yo diría que PHP 5.6 se ha enviado con una gran cantidad de mejoras y adiciones de funciones, y ofrece una de las actualizaciones más sencillas de versiones anteriores..
No olvide informarnos sobre cualquier pregunta o comentario que pueda tener en el feed a continuación..