BT

New Early adopter or innovator? InfoQ has been working on some new features for you. Learn more

PHP 5.6 Released

| by Sergio De Simone on Sep 02, 2014. Estimated reading time: 1 minute |

The PHP development team announced the availability of PHP 5.6. The new release brings new features and many improvements, the PHP development team say, as well as some backward incompatible changes.

Among the most significant changes in this release:

  • Constant scalar expressions

    It is now allowed to use basic arithmetic and logical operators in constant declarations, functions default arguments, and class properties:

    const ONE = 1;
    const TWO = ONE * 2;
    
    class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of THREE is '.self::THREE;
    
    public function f($a = ONE + self::THREE) {
        return $a;
        }
    }
    
  • Improved syntax for variadic functions

    Variadic functions can be declared through a new ... operator:

     
    public function variadic_function($param, ...$paramsArray) {
         // method implementation
    }
    

    In the above syntax, ...$paramsArray tells the interpreter to put all the variadic arguments into the $paramsArray array, which can then be used as such in the method implementation. Previously, variadic arguments could be bundled into an array by calling:

    $paramsArray = array_slice(func_get_args(), 1)
    
  • Exponentiation

    The new ** operator allows to calculate a number to the power of another number.

  • UTF-8

    The default character encoding has been set to UTF-8.

  • GMP operator overloading

    GMP objects now support operator overloading and casting to scalar types. This allows for more expressive code using GMP:

    $a = gmp_init(42);
    $b = gmp_init(17);
    
    // Pre-5.6 code:
    var_dump(gmp_add($a, $b));
    var_dump(gmp_add($a, 17));
    var_dump(gmp_add(42, $b));
    
    // New code:
    var_dump($a + $b);
    var_dump($a + 17);
    var_dump(42 + $b);
         
  • Large file uploads

The previous limit of 2GB on file uploads has been removed and uploads of arbitrary size are now supported.

For users upgrading from PHP 5.5, a migration guide is available, detailing the changes between 5.5 and 5.6.0 and complementing them with a simple demo of many new features.

PHP 5.6.0 also introduces changes that affect compatibility:

  • Array keys won't be overwritten when defining an array as a property of a class via an array literal.

  • json_decode() is more strict in JSON syntax parsing.

  • Stream wrappers now verify peer certificates and host names by default when using SSL/TLS.

  • GMP resources are now objects.

  • Mcrypt functions now require valid keys and IVs.

A full list of all changes can be additionally found in the ChangeLog.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date with curated articles from top InfoQ editors

"You dont know what you dont know" change that by browsing what our editors pick for you.

BT