Sin embargo, desde hace varios meses se está trabajando en la versión 5.3 que incorporará nuevas funcionalidades que desde hace algún tiempo estaban siendo pedidas por parte de la comunidad. Esta nueva versión debiera ser publicada a mediados de 2008.
Namespaces (¡por fin!)
Sin duda el mayor cambio en esta nueva versión es el soporte a namespaces. Hasta ahora la técnica que se utilizaba para evitar la colisión de nombres era simplemente agregarle un prefijo al nombre de cada clase obteniendo nombres tan largos como:
MDB2_Driver_Datatype_Common
.Algunas de las características de la implementación de namespaces son las siguientes:
- Namespaces para clases, funciones y constantes.
- Múltiples namespaces en un mismo archivo.
- Se incorpora la constante
__NAMESPACE__
.
<?phpLa salida de este script es la siguiente:
namespace DB;
class MyDate {}
$clase1 = new MyDate();
namespace TYPES::BASIC;
class MyDate {}
$clase2 = new MyDate();
var_dump(
get_class($clase1),
get_class($clase2),
);
?>
En el repositorio CVS de PHP podrán encontrar un README con más detalles de la implementación de namespaces.
string(10) "DB::MyDate"
string(20) "TYPES::BASIC::MyDate"
Operador "?:"
Esta es otra funcionalidad que llevaba bastante tiempo siendo solicitada por algunos desarrolladores. Su utilidad es similar a la que presta el operador
||
en javascript, tal como muestro en el siguiente ejemplo donde se le asigna un valor por defecto a las variables width
y height
:<script type="text/javascript">En PHP podríamos hacer las siguientes validaciones:
function foo(width, height) {
width = width || 640;
height = height || 480;
// ...
}
</script>
<?phpEste ejemplo fue obtenido de http://ilia.ws
$a = true ?: false; // true
$a = false ?: true; // true
$a = "" ?: 1; // 1
$a = 0 ?: 2; // 2
$a = array() ?: array(1); // array(1)
$a = strlen("") ?: strlen("a"); // 1
?>
Como vemos no es una super-hiper-killer-funcionalidad, pero para los usuarios habituados a javascript es un placer contar con ella.
Otras mejoras
Otras mejoras -además de las habilituales correcciones de bugs, mejoras en seguridad y optimización de código- incluidas en PHP 5.3 son las siguientes:
- Mejora en performance de
md5()
. - Optimización de manejo de excepciones.
- Nueva constante
__DIR__
. (esto nos evitará hacerdirname(__FILE__)
) - Nueva función mágina
_
_callStatic()
que complementa a_
_call()
. - El procesamiento de métodos estáticos se movió desde el tiempo de compilación a tiempo de ejecución (Late Static Binding).
- Nuevo driver nativo de MySQL (MySQLnd) diseñado especialmente para PHP.
- Soporte para archivos .ini (al estilo de
.htaccess
). - Nuevas funcionalidades de OpenSSL destinadas a simplificar las implementaciones de OpenID en PHP.
- Profiling de XSLT. (
$xsltprocessor->setProfiling("/tmp/profile.txt")
); - Nueva constante de error
E_DEPRECATED
. - Garbage collector (
gc_enable()
). - NOWDOC, similar a los HEREDOC pero que no interpreta las variables como
$myvar
.
No hay comentarios:
Publicar un comentario