Nuevas caracteristicas

Se han añadido los Generadores

El soporte para generadores ha sido añadido mediante la palabra clave yield. Los generadores proporcionan una manera sencilla de implementar iteradores simples sin la carga adicional o la complejidad de implementar una clase que implemente la interfaz Iterator.

Un ejemplo sencillo que reimplementa la función range() como un generador (al menos para valores positivos de step):

<?php
function xrange($start$limit$step 1) {
    for (
$i $start$i <= $limit$i += $step) {
        yield 
$i;
    }
}

echo 
'Single digit odd numbers: ';

/*
 * Note that an array is never created or returned,
 * which saves memory.
 */
foreach (xrange(192) as $number) {
    echo 
"$number ";
}

echo 
"\n";
?>

El resultado del ejemplo sería:

Single digit odd numbers: 1 3 5 7 9 

finally keyword added

try-catch blocks now support a finally block for code that should be run regardless of whether an exception has been thrown or not.

New password hashing API

A new password hashing API that makes it easier to securely hash and manage passwords using the same underlying library as crypt() in PHP has been added. See the documentation for password_hash() for more detail.

foreach now supports list()

The foreach control structure now supports unpacking nested arrays into separate variables via the list() construct. For example:

<?php
$array 
= [
    [
12],
    [
34],
];

foreach (
$array as list($a$b)) {
    echo 
"A: $a; B: $b\n";
}
?>

El resultado del ejemplo sería:

A: 1; B: 2
A: 3; B: 4

Further documentation is available on the foreach manual page.

empty() supports arbitrary expressions

Passing an arbitrary expression instead of a variable to empty() is now supported. For example:

<?php
function always_false() {
    return 
false;
}

if (empty(
always_false())) {
    echo 
"This will be printed.\n";
}

if (empty(
true)) {
    echo 
"This will not be printed.\n";
}
?>

El resultado del ejemplo sería:

This will be printed.

array and string literal dereferencing

Array and string literals can now be dereferenced directly to access individual elements and characters:

<?php
echo 'Array dereferencing: ';
echo [
123][0];
echo 
"\n";

echo 
'String dereferencing: ';
echo 
'PHP'[0];
echo 
"\n";
?>

El resultado del ejemplo sería:

Array dereferencing: 1
String dereferencing: P

Class name resolution via ::class

It is possible to use ClassName::class to get a fully qualified name of class ClassName. For example:

<?php
namespace Name\Space;
class 
ClassName {}

echo 
ClassName::class;

echo 
"\n";
?>

El resultado del ejemplo sería:

Name\Space\ClassName

OPcache extension added

The Zend Optimiser+ opcode cache has been added to PHP as the new OPcache extension. OPcache improves PHP performance by storing precompiled script bytecode in shared memory, thereby removing the need for PHP to load and parse scripts on each request. See the installation instructions for more detail on enabling and using OPcache.

foreach now supports non-scalar keys

foreach now supports keys of any type. While non-scalar keys cannot occur in native PHP arrays, it is possible for Iterator::key() to return a value of any type, and this will now be handled correctly.

Apache 2.4 handler supported on Windows

The Apache 2.4 handler SAPI is now supported on Windows.

Improvements to GD

Various improvements have been made to the GD extension, these include:

add a note add a note

User Contributed Notes 6 notes

up
30
emanwebdev at gmail dot com
4 months ago
Thank You for making empty() to support arbitrary expressions!
up
2
ahmad dot samiei at gmail dot com
2 months ago
Thank you to make PHP even better than before.
up
4
PHP Guy
5 months ago
Great work.  Thank you for allowing Lists to return on foreach.
up
2
Love this
2 months ago
Thanks for making "empty" easier to use and for the array dereferencing!!
up
1
yannicschne at gmail dot com
18 days ago
The array and string dereferencing is awesome! Thanks for this.
up
0
mykolas dot sirius at gmail dot com
17 days ago
Finally, array and string literal dereferencing is here, bless you all!
To Top