¡PHP 5.4 está aquí! Lo que debes saber

PHP 5.4 está aquí; el siguiente gran paso adelante desde la versión 5.3: mantener PHP 6 (soporte completo de Unicode) por el momento. Las últimas mejoras mejoran significativamente su elegancia, al tiempo que eliminan las funciones obsoletas, lo que da como resultado una optimización espectacular del tiempo de ejecución (hasta un 20% más de velocidad y reducción del uso de memoria).


Nuevas características y mejoras

Algunas de las nuevas características clave incluyen rasgos, un acortado formación sintaxis, un servidor web incorporado para fines de prueba, uso de $ esto En cierres, clase de acceso de miembros en instanciación., siempre está disponible, y más!

PHP 5.4.0 mejora significativamente el rendimiento, la huella de memoria y corrige más de 100 errores. Las características desaprobadas / eliminadas notables incluyen register_globals, cotizaciones mágicas (a tiempo) y modo seguro. También vale la pena mencionar el hecho de que el soporte multibyte está habilitado de forma predeterminada y default_charset ha sido cambiado de ISO-8859-1 a UTF-8.

Tipo de contenido: texto / html; conjunto de caracteres = utf-8 siempre se envía; así que no hay necesidad de establecer esa meta etiqueta HTML, o enviar encabezados adicionales para compatibilidad con UTF-8.


Rasgos

La mejor demostración de rasgos es cuando varias clases comparten la misma funcionalidad..

Los rasgos (reutilización horizontal / herencia múltiple) son un conjunto de métodos, que son estructuralmente similares a un clase (pero no se puede crear una instancia), que permite a los desarrolladores reutilizar conjuntos de métodos libremente en varias clases independientes. Debido a que PHP es un solo lenguaje de herencia, una subclase puede heredar de una sola superclase; ahí es donde los rasgos vienen a jugar.

El mejor uso de los rasgos se demuestra cuando varias clases comparten la misma funcionalidad. Por ejemplo, imagine que estamos construyendo algún sitio web y que necesitamos utilizar las API de Facebook y Twitter. Construimos dos clases que, en común, tienen una función / método de envoltorio cURL. En lugar de realizar el clásico copiar y pegar de ese método, para usarlo en dos clases, usamos Rasgos (copiar y pegar, estilo de compilador). De esta manera, creamos un código reutilizable y seguimos el principio DRY (No se repita).

Aquí hay un ejemplo:

 / ** rasgo de envoltura de cURL * / rasgo cURL función pública curl ($ url) $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ output = curl_exec ($ ch); curl_close ($ ch); devuelve $ output;  / ** Clase API de Twitter * / class Twitter_API use cURL; // usa el rasgo aquí función pública get ($ url) return json_decode ($ this-> curl ('http://api.twitter.com/'.$url));  / ** Clase API de Facebook * / class Facebook_API use cURL; // y aquí la función pública obtiene ($ url) return json_decode ($ this-> curl ('http://graph.facebook.com/'.$url));  $ facebook = nuevo Facebook_API (); echo $ facebook-> get ('500058753') -> nombre; // Rasmus Lerdorf / ** Ahora demostrando lo increíble de la sintaxis de PHP 5.4 * / echo (nueva Facebook_API) -> get ('500058753') -> name; // Rasmus Lerdorf $ foo = 'get'; echo (nuevo Facebook_API) -> $ foo ('500058753') -> nombre; // y de nuevo, Rasmus Lerdorf echo (nuevo Twitter_API) -> obtener ('1 / users / show.json? nombre_de_quipo = rasmus') -> nombre; // y una vez más, Rasmus Lerdorf // P.S. No estoy obsesionada con Rasmus :)

¿Lo tengo? ¿No? Aquí está el ejemplo más simple.!

 rasgo Net public function net () return 'Net';  rasgo Tuts función pública tuts () return 'Tuts';  clase NetTuts use Net, Tuts; public function plus () return '+';  $ o = new NetTuts; echo $ o-> net (), $ o-> tuts (), $ o-> plus (); echo (new NetTuts) -> net (), (new NetTuts) -> tuts (), (new NetTuts) -> plus ();

Si tiene alguna pregunta sobre los rasgos, publique una nota en la sección de comentarios a continuación..

Consejo importante: La constante mágica para los rasgos es __RASGO__.


Servidor web CLI incorporado

En desarrollo web, el mejor amigo de PHP es Apache HTTPD Server. A veces, sin embargo, puede ser excesivo configurar httpd.conf solo para usarlo en un entorno de desarrollo, cuando realmente necesita un pequeño servidor web que se pueda iniciar con una simple línea de comandos. Afortunadamente, PHP 5,4 viene con un servidor web CLI incorporado.

El servidor web PHP CLI está diseñado solo para fines de desarrollo y no debe utilizarse en producción.

Nota: Las instrucciones a continuación son para un entorno Windows.

Paso 1 - Crear un directorio raíz de documentos, un archivo de enrutador y un archivo de índice

Ve a la raíz de tu disco duro (asumiendo que DO:\). Crear un directorio / carpeta, llamado public_html. Cree un nuevo archivo dentro de esta carpeta y asígnele un nombre router.php. Copie el contenido a continuación y péguelo en este archivo recién creado..

 

Ahora, crea otro archivo, llamado index.php. Copia los contenidos de abajo y guarda el archivo..

 

Abre tu php.ini archivo (se encuentra en el directorio de instalación de PHP, por ejemplo,. C: \ php).

Encuentra el include_path configuración (se encuentra en ~ 708 línea). Añadir C: \ public_html hasta el final de la cadena entre comillas, separado por una punto y coma. El resultado final debe verse como:

 include_path = ".; C: \ php \ PEAR; C: \ public_html"

Guarde y cierre el archivo. En el siguiente paso.

Paso 2 - Ejecutar el servidor web

Abra el símbolo del sistema (Windows + R, escribir cmd, golpear Entrar); Deberías ver algo como esto, dependiendo de tu versión de Windows.

 Microsoft Windows XP [Versión 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C: \ Documents and Settings \ nettuts>

Cambie su directorio actual a la instalación de PHP siguiendo el siguiente ejemplo:

 C: \ Documents and Settings \ nettuts> cd C: \ php C: \ php>

Aquí viene la parte más importante: ejecutar el servidor web. Dupdo…

 php -S 0.0.0.0:8080 -t C: \ public_html router.php

... y péguelo en el símbolo del sistema (botón derecho del ratón, haga clic en Pegar pegar). Golpear Entrar. Si todo va bien, debería ver algo similar a lo que se muestra a continuación. No cierre el símbolo del sistema; Si lo haces, saldrás del servidor web también..

 C: \ php> php -S 0.0.0.0:8080 -t C: \ public_html router.php PHP 5.4.0 Development Server se inició el viernes 02 de marzo a las 36:40 2012 Escuchando el 0.0.0.0:8080 La raíz del documento es C : \ public_html Presione Ctrl-C para salir.

Abrir http: // localhost: 8080 / index.php en tu navegador y deberías ver:

 Hola Nettuts + lectores!

Voila! Eso es todo, feliz codificación!

Consejo 1: Hacer una php-server.bat Archivo con los siguientes contenidos: C: \ php \ php -S 0.0.0.0:8080 -t C: \ public_html router.php. Haga doble clic en él y, ahora, el servidor está en funcionamiento.!

Consejo 2: Utilizar 0.0.0.0 en lugar de localhost Si anticipa que su servidor será accedido desde internet..


Sintaxis de matriz más corta

PHP 5.4 ofrece un nuevo más corto formación sintaxis:

 $ frutas = array ('manzanas', 'naranjas', 'plátanos'); // "old" way // Lo mismo que la notación de matriz literal de Javascript $ fruits = ['apples', 'naranjas', 'bananas']; // array asociativo $ array = ['foo' => 'bar', 'bar' => 'foo'];

Tenga en cuenta que el método "antiguo" todavía está en uso y siempre lo estará. Esto es simplemente una alternativa..


Desreferenciación de Array

No hay más variables temporales al tratar con formacións!

Imaginemos que queremos recuperar el segundo nombre de Alan Mathison Turing:

 echo explode (", 'Alan Mathison Turing') [1]; // Mathison

Dulce; Pero no siempre fue tan fácil. Antes de 5.4, teníamos que hacer:

 $ tmp = explode (", 'Alan Mathison Turing'); echo $ tmp [1]; // Mathison

Ahora, ¿qué pasa si queremos obtener el apellido (último elemento en formación):

 eco final (explode (", 'Alan Mathison Turing')); // Turing

Esto funciona bien, sin embargo, lanzará un E_STRICT (Normas estrictas: solo las variables deben pasarse por referencia) error, ya que se convirtió en parte de E_ALL en error al reportar.

Aquí hay un ejemplo un poco más avanzado:

 function foobar () return ['foo' => ['bar' => 'Hello']];  echo foobar () ['foo'] ['bar']; // Hola

$ esto En Funciones Anónimas

Ahora puede referirse a la instancia de objeto desde funciones anónimas (también conocidas como cierres) mediante el uso $ esto.

 class Foo function hello () echo 'Hello Nettuts!';  function anonymous () return function () $ this-> hello (); // $ esto no era posible antes;  Barra de clase función __construct (Foo $ o) // objeto de la clase Foo typehint $ x = $ o-> anonymous (); // obtener Foo :: hello () $ x (); // ejecuta Foo :: hello () new Bar (new Foo); // Hola Nettuts!

Tenga en cuenta que esto podría lograrse antes de 5.4, pero fue una exageración.

 función anónima () $ que = $ esto; // $ que ahora es $ this return function () use ($ that) $ that-> hello (); ; 

siempre está encendido

A pesar de php.ini ajuste, short_open_tag, (Abrir etiqueta PHP y eco) siempre estará disponible. Esto significa que ahora puedes usar de forma segura:

 

... en tus plantillas en lugar de ...

 

Representación de números binarios

Sólo hay 0b10 tipos de personas;
Los que entienden binario y los que no entienden..

A partir de ahora, los enteros se pueden especificar en notación decimal (base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente precedida por un signo (- o +). Para usar la notación octal, preceda el número con un 0 (cero). Para usar la notación hexadecimal, preceda el número con 0x. Para usar la notación binaria, precede el número con 0b.

Ejemplo: representación de número 31 (decimal).

 echo 0b11111; // binario, introducido en PHP 5.4 echo 31; // duh echo 0x1f; // eco hexadecimal 037; // octal

Tipografía callable

La tipografía es para aquellos que desean hacer de PHP un lenguaje tipificado más fuerte. Las sugerencias de tipo solo pueden ser de la objeto y formación escriba desde PHP 5.1, y llamable desde PHP 5.4. Tipografía tradicional con En t y cuerda aún no es compatible.

 function my_function (callable $ x) return $ x ();  function my_callback_function () return 'Hello Nettuts!'; class Hello static function hi () return 'Hello Nettuts!'; class Hi function hello () return 'Hello Nettuts!'; echo my_function (function () return 'Hello Nettuts!';); // función anónima echo my_function ('my_callback_function'); // función de devolución de llamada echo my_function (['Hello', 'hi']); // nombre de la clase, método estático echo my_function ([(new Hi), 'hello')); // objeto de la clase, nombre del método

Temporizador de alta precisión inicializado

$ _SERVER ['REQUEST_TIME_FLOAT'] Se ha añadido, con microsegundos de precisión (float). Esto es útil cuando necesita calcular el tiempo de ejecución de un script.

 echo 'Ejecutado en', round (microtime (true) - $ _SERVER ['REQUEST_TIME_FLOAT'], 2), 's';

__destruct () (o Resumen)

En general, PHP 5.4 ofrece numerosas mejoras. Ahora, depende de usted obtener una copia nueva de php.net y hacer un código PHP de calidad orientado a objetos.!

?