- 64-bit pack codes
5.6.0
- Variadic functions with "..." (and related packing/unpacking with the
...
operator) - ** operator for exponentiation
- Constant scalar expressions (const FOO = 2*60*60)
- use const and use function make constants/functions importable from other namespaces
- htmlspecialchars() and friends use the INI default_charset setting as default (update to 5.4 behavior)
- php://input can be reused and
$HTTP_RAW_POST_DATA
can be disabled (and will be, in the future) - File uploads can be >2GB
- Constant-time string comparison (aka timing-safe comparison) added as hash_equals
- I am still curious: why
hash_equals
? What's the relation to hashing?
- I am still curious: why
- Generators
- finally keyword for exception handling with try/catch
- Password hashing API: password_hash and related functions
- list() in foreach:
foreach($nest as list($x, $y))
- PBKDF2 support in hash and openssl (hash_pbkdf2, openssl_pbkdf2)
- empty() accepts arbitrary expressions, not just lvalues
- array and string literal dereferencing:
"php"[2]
or[1,2,10][2]
- But is that useful?
- ::class syntax:
namespace A\B { class C { }; echo C::class; /* A\B\C */ }
- OpCache extension added
- MySQL-nd supports sha256-based authentication, which has been available since MySQL 5.6.6
- curl share handles via curl_share_init and friends [added to this post on 2015-02-17]
- DEPRECATED: preg_replace's /e modifier, in favor of preg_replace_callback
Removed:
- safe_mode
- register_globals
- magic_quotes
- call-time pass-by-reference
- using TZ when guessing the default timezone
- Salsa10 and Salsa20 hash algorithms
- Traits
- Class::{expr} syntax
- Short array syntax:
[2,3]
forarray(2,3)
- Binary literal syntax:
0b1101
- Closures can use
$this
in the body:function some_method () { return function () { return $this->protected_thing(); } }
- Using new objects without assigning them:
(new Foo)->bar()
- CLI server
- session_status function
- header_register_callback function
- mysqli_result now implements Traversable:
$r=$dbh->query(...); foreach ($r as $res) { ... }
- htmlspecialchars() and friends default to UTF-8 instead of ISO-8859-1 for character set.
- This would be changed to use the default_charset INI setting in 5.6.
- 5.4's documentation pointed out that default_charset could be used by sending an empty string, "", as the character set to htmlspecialchars—and said you didn't really want it.
Added:
- Namespaces
- Late static binding and associated 'static::method()' call syntax
- "Limited" goto support
- Closures aka anonymous functions, although they cannot make use of
$this
until 5.4 - __callStatic() and __invoke() magic methods, to support
$obj($arg)
call syntax - 'nowdoc' and double-quoted 'heredoc' syntax
- $x=<<<'FOO' consumes text until FOO and does not do any interpolation / variable substitution on it
- $x=<<<"FOO" acts just like traditional $x=<<<FOO, both consuming text until FOO and doing interpolation / variable substitution as if it were a double-quoted string.
- Constants definable outside of classes with the
const
keyword, not just the define function - Short ternary operator: a ?: b equivalent to a ? a : b
- $cls::$foo syntax for accessing static members of a class whose name is stored in a variable ($cls in this example)
- Chained exceptions: the constructor sprouted an extra parameter for a previous exception (generally should mean "the cause of this exception being constructed")
- DEPRECATED: many features that would be removed in 5.4.0, including register_globals, magic_quotes, and safe_mode.
No comments:
Post a Comment