-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Output of token_get_all()
depends on php build and config options for short tags
#185
Comments
This is annoying for developers running unit tests with short_open_tag enabled (e.g. if you build php from source with support for that) - By making this change, this PR ensures that those developers don't accidentally commit modified versions of programStructure13.php.tree, .diag, etc. The short_open_tag option cannot be changed at runtime. An alternative could be to add short_open_tag=0 to phpunit.xml (But in the future, someone might want to explicitly test the behavior with short open tags?)
This is annoying for developers running unit tests with short_open_tag enabled (e.g. if you build php from source with support for that) - By making this change, this PR ensures that those developers don't accidentally commit modified versions of programStructure13.php.tree, .diag, etc. The short_open_tag option cannot be changed at runtime. An alternative could be to add short_open_tag=0 to phpunit.xml (But in the future, someone might want to explicitly test the behavior with short open tags?)
This is annoying for developers running unit tests with short_open_tag enabled (e.g. if you build php from source with support for that) Add short_open_tag=0 to phpunit.xml - By making this change, this PR ensures that those developers don't accidentally commit modified versions of programStructure13.php.tree, .diag, etc. NOTE: The short_open_tag option cannot be changed at runtime. - In the future, someone might want to explicitly test the behavior with short open tags, but there's no reason to right now.
This is annoying for developers running unit tests with short_open_tag enabled (e.g. if you build php from source with support for that) - By making this change, this PR ensures that those developers don't accidentally commit modified versions of programStructure13.php.tree, .diag, etc. The short_open_tag option cannot be changed at runtime. An alternative could be to add short_open_tag=0 to phpunit.xml (But in the future, someone might want to explicitly test the behavior with short open tags?)
This is annoying for developers running unit tests with short_open_tag enabled (e.g. if you build php from source with support for that) - By making this change, this PR ensures that those developers don't accidentally commit modified versions of programStructure13.php.tree, .diag, etc. The short_open_tag option cannot be changed at runtime. An alternative could be to add short_open_tag=0 to phpunit.xml (But in the future, someone might want to explicitly test the behavior with short open tags?)
Looking at similar projects, nikic/php-parser also uses token_get_all - in that issue, a user wanted to enable short_open_tags to parse a project using short open tags nikic/PHP-Parser#290 I'm considered proposing an RFC adding new flags such as TOKEN_ENABLE_SHORT_OPEN_TAG/TOKEN_DISABLE_SHORT_OPEN_TAG for token_get_all as a php ast - it seems doable to temporarily override it (move from CG(short_tags) to a new setting SCNG(short_tags) in Zend/zend_language_scanner.l)
|
This seems to be related to the options used to build PHP
See https://secure.php.net/manual/en/ini.core.php#ini.short-open-tag and https://secure.php.net/manual/en/language.basic-syntax.phptags.php
This also causes two test failures in programStructure21.php.tree and programStructure13.php.tree, and causes that test to save a different
.tree
to disk (Which may then get accidentally be configured)This can be checked by
ini_get('short_open_tag') === 1
. This was seen in my PHP build from source, which used travis/compile.sh (ini_get() returned that even when started with--no-php-ini
, but didn't when-d short_open_tag=0
was provided)Impact:
(I don't think this is a common use case. This issue affects
<?
, not<?=
)Possible Remediations:
<?
(Might do the wrong thing for non-PHP)short_open_tag
is disabled via ini setting (checkable via ini_get())(Or optionally restart binary under the hood)
The text was updated successfully, but these errors were encountered: