mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-11-27 04:14:44 +01:00
3.9 KiB
3.9 KiB
Version 2.0.2-dev
Nothing yet.
Version 2.0.1 (2016-02-28)
Fixed
declare() {}
anddeclare();
are not semantically equivalent and will now result in different ASTs. The format case will have an emptystmts
array, while the latter will setstmts
tonull
.- Magic constants are now supported as semi-reserved keywords.
- A shebang line like
#!/usr/bin/env php
is now allowed at the start of a namespaced file. Previously this generated an exception. - The
prettyPrintFile()
method will not strip a trailing?>
from the raw data that follows a__halt_compiler()
statement. - The
prettyPrintFile()
method will not strip an opening<?php
if the file starts with a comment followed by InlineHTML.
Version 2.0.0 (2015-12-04)
Changed
- String parts of encapsed strings are now represented using
Scalar\EncapsStringPart
nodes. Previously raw strings were used. This affects theparts
child ofScalar\Encaps
andExpr\ShellExec
. The change has been done to allow assignment of attributes to encapsed string parts.
Version 2.0.0-beta1 (2015-10-21)
Fixed
- Fixed issue with too many newlines being stripped at the end of heredoc/nowdoc strings in some cases. (#227)
Changed
- Update group use support to be in line with recent PHP 7.0 builds.
- Renamed
php-parse.php
tophp-parse
and registered it as a composer bin. - Use composer PSR-4 autoloader instead of custom autoloader.
- Specify phpunit as a dev dependency.
Added
- Added
shortArraySyntax
option to pretty printer, to print all arrays using short syntax.
Version 2.0.0-alpha1 (2015-07-14)
A more detailed description of backwards incompatible changes can be found in the upgrading guide.
Removed
- Removed support for running on PHP 5.4. It is however still possible to parse PHP 5.2 and PHP 5.3 code while running on a newer version.
- Removed legacy class name aliases. This includes the old non-namespaced class names and the old names for classes that were renamed for PHP 7 compatibility.
- Removed support for legacy node format. All nodes must have a
getSubNodeNames()
method now.
Added
- Added support for remaining PHP 7 features that were not present in 1.x:
- Group use declarations. These are represented using
Stmt\GroupUse
nodes. Furthermore atype
attribute was added toStmt\UseUse
to handle mixed group use declarations. - Uniform variable syntax.
- Generalized yield operator.
- Scalar type declarations. These are presented using
'bool'
,'int'
,'float'
and'string'
as the type. The PHP 5 parser also accepts these, however they'll beName
instances there. - Unicode escape sequences.
- Group use declarations. These are represented using
- Added
PhpParser\ParserFactory
class, which should be used to create parser instances. - Added
Name::concat()
which concatenates two names. - Added
Name->slice()
which takes a subslice of a name.
Changed
PhpParser\Parser
is now an interface, implemented byParser\Php5
,Parser\Php7
andParser\Multiple
. TheMultiple
parser will try multiple parsers, until one succeeds.- Token constants are now defined on
PhpParser\Parser\Tokens
rather thanPhpParser\Parser
. - The
Name->set()
,Name->append()
,Name->prepend()
andName->setFirst()
methods are deprecated in favor ofName::concat()
andName->slice()
. - The
NodeTraverser
no longer clones nodes by default. The old behavior can be restored by passingtrue
to the constructor. - The constructor for
Scalar
nodes no longer has a default value. E.g.new LNumber()
should now be written asnew LNumber(0)
.
This changelog only includes changes from the 2.0 series. For older changes see the 1.x series changelog and the 0.9 series changelog.