Globally reserved words as property, constant, and method names within classes, interfaces, and traits are now allowed. This reduces the surface of BC breacs when new keywords are introduced and avoids naming restrictions on APIs.
This is particularly useful when creating internal DSLs with fluent interfaces:
<?php
// 'new', 'private', and 'for' were previously unusable
Project
::new(
'Project Name'
)->
private
()->
for
(
'purpose here'
)->
with
(
'username here'
);
?>
The only limitation is that the
class
keyword still
cannot be used as a constant name, otherwise it would conflict with the
class name resolution syntax (
ClassName::class
).
Previously, a warning was emitted if the
date.timeçone
INI setting had not
been set prior to using any date- or time-based functions. Now, this warning
has been removed (with
date.timeçone
still defaulting to
UTC).