pax_global_header 0000666 0000000 0000000 00000000064 13716532113 0014514 g ustar 00root root 0000000 0000000 52 comment=1fd0c45ef3e3399797b0b5ce6c956a869f23b189
php-token-stream-4.0.4/ 0000775 0000000 0000000 00000000000 13716532113 0014717 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/.github/ 0000775 0000000 0000000 00000000000 13716532113 0016257 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/.github/FUNDING.yml 0000664 0000000 0000000 00000000032 13716532113 0020067 0 ustar 00root root 0000000 0000000 github: sebastianbergmann
php-token-stream-4.0.4/.github/workflows/ 0000775 0000000 0000000 00000000000 13716532113 0020314 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/.github/workflows/ci.yml 0000664 0000000 0000000 00000006307 13716532113 0021440 0 ustar 00root root 0000000 0000000 # https://help.github.com/en/categories/automating-your-workflow-with-github-actions
on:
- "pull_request"
- "push"
name: "CI"
jobs:
coding-guidelines:
name: "Coding Guidelines"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2"
- name: "Run friendsofphp/php-cs-fixer"
run: "php7.3 ./tools/php-cs-fixer fix --diff-format=udiff --dry-run --show-progress=dots --using-cache=no --verbose"
type-checker:
name: "Type Checker"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2"
- name: "Set COMPOSER_ROOT_VERSION environment variable"
uses: "docker://ergebnis/composer-root-version-action:0.1.3"
- name: "Update dependencies with composer"
run: "php7.3 ./tools/composer update --no-ansi --no-interaction --no-progress"
- name: "Run vimeo/psalm"
run: "php7.3 ./tools/psalm --config=.psalm/config.xml --no-progress --shepherd --show-info=false --stats"
backward-compatibility:
name: Backward Compatibility
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fetch tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Install PHP with extensions
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
coverage: none
extensions: intl
- name: Run roave/backward-compatibility-check
run: ./tools/roave-backward-compatibility-check --from=4.0.2
tests:
name: "Tests"
runs-on: "ubuntu-latest"
strategy:
matrix:
php-version:
- "7.3"
- "7.4"
- "8.0"
dependencies:
- "lowest"
- "highest"
steps:
- name: "Checkout"
uses: "actions/checkout@v2"
- name: "Install PHP with extensions"
uses: "shivammathur/setup-php@v1"
with:
php-version: "${{ matrix.php-version }}"
coverage: "pcov"
- name: "Cache dependencies installed with composer"
uses: "actions/cache@v1"
with:
path: "~/.composer/cache"
key: "php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}"
restore-keys: "php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-"
- name: "Set COMPOSER_ROOT_VERSION environment variable"
uses: "docker://ergebnis/composer-root-version-action:0.1.3"
- name: "Install lowest dependencies with composer"
if: "matrix.dependencies == 'lowest'"
run: "./tools/composer update --no-ansi --no-interaction --no-progress --prefer-lowest"
- name: "Install highest dependencies with composer"
if: "matrix.dependencies == 'highest'"
run: "./tools/composer update --no-ansi --no-interaction --no-progress"
- name: "Run tests with phpunit/phpunit"
run: "vendor/bin/phpunit --coverage-clover=coverage.xml"
- name: "Send code coverage report to Codecov.io"
env:
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}"
run: "bash <(curl -s https://codecov.io/bash) || true"
php-token-stream-4.0.4/.gitignore 0000664 0000000 0000000 00000000133 13716532113 0016704 0 ustar 00root root 0000000 0000000 /.idea
/.php_cs
/.php_cs.cache
/.phpunit.result.cache
/.psalm/cache
/composer.lock
/vendor
php-token-stream-4.0.4/.phive/ 0000775 0000000 0000000 00000000000 13716532113 0016110 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/.phive/phars.xml 0000664 0000000 0000000 00000000670 13716532113 0017752 0 ustar 00root root 0000000 0000000
php-token-stream-4.0.4/.php_cs.dist 0000664 0000000 0000000 00000017355 13716532113 0017151 0 ustar 00root root 0000000 0000000
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
EOF;
$finder = PhpCsFixer\Finder::create()
->exclude('tests/_fixture')
->in(__DIR__);
return PhpCsFixer\Config::create()
->setFinder($finder)
->setRiskyAllowed(true)
->setRules([
'align_multiline_comment' => true,
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => [
'operators' => [
'=' => 'align',
'=>' => 'align',
],
],
'blank_line_after_namespace' => true,
'blank_line_before_statement' => [
'statements' => [
'break',
'continue',
'declare',
'do',
'for',
'foreach',
'if',
'include',
'include_once',
'require',
'require_once',
'return',
'switch',
'throw',
'try',
'while',
'yield',
],
],
'braces' => true,
'cast_spaces' => true,
'class_attributes_separation' => ['elements' => ['const', 'method', 'property']],
'combine_consecutive_issets' => true,
'combine_consecutive_unsets' => true,
'compact_nullable_typehint' => true,
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'none'],
'declare_strict_types' => true,
'dir_constant' => true,
'elseif' => true,
'encoding' => true,
'full_opening_tag' => true,
'function_declaration' => true,
'global_namespace_import' => [
'import_classes' => true,
'import_constants' => true,
'import_functions' => true,
],
'header_comment' => ['header' => $header, 'separate' => 'none'],
'indentation_type' => true,
'is_null' => true,
'line_ending' => true,
'list_syntax' => ['syntax' => 'short'],
'logical_operators' => true,
'lowercase_cast' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'lowercase_static_reference' => true,
'magic_constant_casing' => true,
'method_argument_space' => ['ensure_fully_multiline' => true],
'modernize_types_casting' => true,
'multiline_comment_opening_closing' => true,
'multiline_whitespace_before_semicolons' => true,
'native_constant_invocation' => false,
'native_function_casing' => false,
'native_function_invocation' => false,
'new_with_braces' => false,
'no_alias_functions' => true,
'no_alternative_syntax' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => true,
'no_blank_lines_before_namespace' => true,
'no_closing_tag' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => true,
'no_homoglyph_names' => true,
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'print'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_null_property_initialization' => true,
'no_php4_constructor' => true,
'no_short_bool_cast' => true,
'no_short_echo_tag' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_after_function_name' => true,
'no_spaces_inside_parenthesis' => true,
'no_superfluous_elseif' => true,
'no_superfluous_phpdoc_tags' => [
'allow_mixed' => true,
],
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_control_parentheses' => true,
'no_unneeded_curly_braces' => true,
'no_unneeded_final_method' => true,
'no_unreachable_default_argument_value' => true,
'no_unset_on_property' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'non_printable_character' => true,
'normalize_index_brace' => true,
'object_operator_without_whitespace' => true,
'ordered_class_elements' => [
'order' => [
'use_trait',
'constant_public',
'constant_protected',
'constant_private',
'property_public_static',
'property_protected_static',
'property_private_static',
'property_public',
'property_protected',
'property_private',
'method_public_static',
'construct',
'destruct',
'magic',
'phpunit',
'method_public',
'method_protected',
'method_private',
'method_protected_static',
'method_private_static',
],
],
'ordered_imports' => [
'imports_order' => [
PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_CONST,
PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_FUNCTION,
PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_CLASS,
]
],
'ordered_interfaces' => [
'direction' => 'ascend',
'order' => 'alpha',
],
'phpdoc_add_missing_param_annotation' => false,
'phpdoc_align' => true,
'phpdoc_annotation_without_dot' => true,
'phpdoc_indent' => true,
'phpdoc_no_access' => true,
'phpdoc_no_empty_return' => true,
'phpdoc_no_package' => true,
'phpdoc_order' => true,
'phpdoc_return_self_reference' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => true,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_summary' => true,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'phpdoc_trim_consecutive_blank_line_separation' => true,
'phpdoc_types' => ['groups' => ['simple', 'meta']],
'phpdoc_types_order' => true,
'phpdoc_var_without_name' => true,
'pow_to_exponentiation' => true,
'protected_to_private' => true,
'return_assignment' => true,
'return_type_declaration' => ['space_before' => 'none'],
'self_accessor' => true,
'semicolon_after_instruction' => true,
'set_type_to_cast' => true,
'short_scalar_cast' => true,
'simplified_null_return' => false,
'single_blank_line_at_eof' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_quote' => true,
'standardize_not_equals' => true,
'ternary_to_null_coalescing' => true,
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'visibility_required' => [
'elements' => [
'const',
'method',
'property',
],
],
'void_return' => false,
'whitespace_after_comma_in_array' => true,
]);
php-token-stream-4.0.4/.psalm/ 0000775 0000000 0000000 00000000000 13716532113 0016111 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/.psalm/baseline.xml 0000664 0000000 0000000 00000001501 13716532113 0020412 0 ustar 00root root 0000000 0000000
string
array|bool
$this->interfaces
false
string
php-token-stream-4.0.4/.psalm/config.xml 0000664 0000000 0000000 00000001452 13716532113 0020102 0 ustar 00root root 0000000 0000000
php-token-stream-4.0.4/ChangeLog.md 0000664 0000000 0000000 00000006076 13716532113 0017101 0 ustar 00root root 0000000 0000000 # Change Log
All notable changes to `sebastianbergmann/php-token-stream` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
## [4.0.4] - 2020-08-04
### Added
* Support for `NAME_FULLY_QUALIFIED`, `NAME_QUALIFIED`, and `NAME_RELATIVE` tokens
## [4.0.3] - 2020-06-27
### Added
* This component is now supported on PHP 8
## [4.0.2] - 2020-06-16
### Fixed
* Fixed backward compatibility breaks introduced in version 4.0.1
## [4.0.1] - 2020-05-06
### Fixed
* [#93](https://github.com/sebastianbergmann/php-token-stream/issues/93): Class with method that uses anonymous class is not processed correctly
## [4.0.0] - 2020-02-07
### Removed
* This component is no longer supported PHP 7.1 and PHP 7.2
## [3.1.1] - 2019-09-17
### Fixed
* [#84](https://github.com/sebastianbergmann/php-token-stream/issues/84): Methods named `class` are not handled correctly
## [3.1.0] - 2019-07-25
### Added
* Added support for `FN` and `COALESCE_EQUAL` tokens introduced in PHP 7.4
## [3.0.2] - 2019-07-08
### Changed
* [#82](https://github.com/sebastianbergmann/php-token-stream/issues/82): Make sure this component works when its classes are prefixed using php-scoper
## [3.0.1] - 2018-10-30
### Fixed
* [#78](https://github.com/sebastianbergmann/php-token-stream/pull/78): `getEndTokenId()` does not handle string-dollar (`"${var}"`) interpolation
## [3.0.0] - 2018-02-01
### Removed
* [#71](https://github.com/sebastianbergmann/php-token-stream/issues/71): Remove code specific to Hack language constructs
* [#72](https://github.com/sebastianbergmann/php-token-stream/issues/72): Drop support for PHP 7.0
## [2.0.2] - 2017-11-27
### Fixed
* [#69](https://github.com/sebastianbergmann/php-token-stream/issues/69): `PHP_Token_USE_FUNCTION` does not serialize correctly
## [2.0.1] - 2017-08-20
### Fixed
* [#68](https://github.com/sebastianbergmann/php-token-stream/issues/68): Method with name `empty` wrongly recognized as anonymous function
## [2.0.0] - 2017-08-03
[4.0.4]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.3...4.0.4
[4.0.3]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.2...4.0.3
[4.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.1...4.0.2
[4.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/4.0.0...4.0.1
[4.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/3.1.1...4.0.0
[3.1.1]: https://github.com/sebastianbergmann/php-token-stream/compare/3.1.0...3.1.1
[3.1.0]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.2...3.1.0
[3.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.1...3.0.2
[3.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/3.0.0...3.0.1
[3.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0...3.0.0
[2.0.2]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0.1...2.0.2
[2.0.1]: https://github.com/sebastianbergmann/php-token-stream/compare/2.0.0...2.0.1
[2.0.0]: https://github.com/sebastianbergmann/php-token-stream/compare/1.4.11...2.0.0
php-token-stream-4.0.4/LICENSE 0000664 0000000 0000000 00000003017 13716532113 0015725 0 ustar 00root root 0000000 0000000 php-token-stream
Copyright (c) 2009-2020, Sebastian Bergmann .
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Sebastian Bergmann nor the names of his
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
php-token-stream-4.0.4/README.md 0000664 0000000 0000000 00000001351 13716532113 0016176 0 ustar 00root root 0000000 0000000 # phpunit/php-token-stream
[](https://github.com/sebastianbergmann/php-token-stream/actions)
[](https://shepherd.dev/github/sebastianbergmann/php-token-stream)
## Installation
You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
```
composer require phpunit/php-token-stream
```
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
```
composer require --dev phpunit/php-token-stream
```
php-token-stream-4.0.4/bin/ 0000775 0000000 0000000 00000000000 13716532113 0015467 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/bin/dump 0000775 0000000 0000000 00000002355 13716532113 0016367 0 ustar 00root root 0000000 0000000 #!/usr/bin/env php
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
require __DIR__ . '/../vendor/autoload.php';
if (!isset($argv[1]) || !file_exists($argv[1])) {
exit;
}
$tokens = new PHP_Token_Stream(file_get_contents($argv[1]));
$tokensLength = strlen((string) count($tokens));
$linesLength = max(strlen('Line'), strlen((string) $tokens->getLinesOfCode()['loc']));
$header = sprintf(
'%-' . $tokensLength . 's %-' . $linesLength . 's %-40s %s',
'#',
'Line',
'Token',
'Text'
);
print $header . PHP_EOL;
print str_repeat('-', strlen($header)) . PHP_EOL;
foreach ($tokens as $token) {
printf(
'%-' . $tokensLength . 'd %-' . $linesLength . 'd %-40s %s' . PHP_EOL,
$token->getId(),
$token->getLine(),
str_replace('PHP_Token_', '', get_class($token)),
str_replace(
[
"\r",
"\n"
],
[
'\r',
'\n'
],
(string) $token
)
);
}
php-token-stream-4.0.4/bin/dump-native 0000775 0000000 0000000 00000002527 13716532113 0017654 0 ustar 00root root 0000000 0000000 #!/usr/bin/env php
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if (!isset($argv[1]) || !file_exists($argv[1])) {
exit;
}
$tokens = token_get_all(file_get_contents($argv[1]));
$tokensLength = strlen((string) count($tokens));
$linesLength = max(strlen('Line'), substr_count("\n", file_get_contents($argv[1])));
$header = sprintf(
'%-' . $tokensLength . 's %-' . $linesLength . 's %-40s %s',
'#',
'Line',
'Token',
'Text'
);
print $header . PHP_EOL;
print str_repeat('-', strlen($header)) . PHP_EOL;
$i = 0;
foreach ($tokens as $token) {
if (is_array($token)) {
$name = token_name($token[0]);
$text = $token[1];
$line = $token[2];
} else {
$name = '';
$text = $token;
$line = '';
}
printf(
'%-' . $tokensLength . 'd %-' . $linesLength . 's %-40s %s' . PHP_EOL,
$i++,
$line,
str_replace('T_', '', $name),
str_replace(
[
"\r",
"\n"
],
[
'\r',
'\n'
],
$text
)
);
}
php-token-stream-4.0.4/build.xml 0000664 0000000 0000000 00000002062 13716532113 0016540 0 ustar 00root root 0000000 0000000
php-token-stream-4.0.4/composer.json 0000664 0000000 0000000 00000001742 13716532113 0017445 0 ustar 00root root 0000000 0000000 {
"name": "phpunit/php-token-stream",
"description": "Wrapper around PHP's tokenizer extension.",
"type": "library",
"keywords": ["tokenizer"],
"homepage": "https://github.com/sebastianbergmann/php-token-stream/",
"license": "BSD-3-Clause",
"authors": [
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
}
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-token-stream/issues"
},
"prefer-stable": true,
"require": {
"php": "^7.3 || ^8.0",
"ext-tokenizer": "*"
},
"require-dev": {
"phpunit/phpunit": "^9.0"
},
"config": {
"platform": {
"php": "7.3.0"
},
"optimize-autoloader": true,
"sort-packages": true
},
"autoload": {
"classmap": [
"src/"
]
},
"extra": {
"branch-alias": {
"dev-master": "4.0-dev"
}
}
}
php-token-stream-4.0.4/phpunit.xml 0000664 0000000 0000000 00000001436 13716532113 0017134 0 ustar 00root root 0000000 0000000
tests
src
php-token-stream-4.0.4/src/ 0000775 0000000 0000000 00000000000 13716532113 0015506 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/src/Abstract.php 0000664 0000000 0000000 00000000475 13716532113 0017770 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ABSTRACT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Ampersand.php 0000664 0000000 0000000 00000000476 13716532113 0020140 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_AMPERSAND extends PHP_Token
{
}
php-token-stream-4.0.4/src/AndEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017720 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_AND_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Array.php 0000664 0000000 0000000 00000000472 13716532113 0017300 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ARRAY extends PHP_Token
{
}
php-token-stream-4.0.4/src/ArrayCast.php 0000664 0000000 0000000 00000000477 13716532113 0020120 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ARRAY_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/As.php 0000664 0000000 0000000 00000000467 13716532113 0016571 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_AS extends PHP_Token
{
}
php-token-stream-4.0.4/src/At.php 0000664 0000000 0000000 00000000467 13716532113 0016572 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_AT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Backtick.php 0000664 0000000 0000000 00000000475 13716532113 0017740 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BACKTICK extends PHP_Token
{
}
php-token-stream-4.0.4/src/BadCharacter.php 0000664 0000000 0000000 00000000502 13716532113 0020517 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BAD_CHARACTER extends PHP_Token
{
}
php-token-stream-4.0.4/src/BoolCast.php 0000664 0000000 0000000 00000000476 13716532113 0017734 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BOOL_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/BooleanAnd.php 0000664 0000000 0000000 00000000500 13716532113 0020214 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BOOLEAN_AND extends PHP_Token
{
}
php-token-stream-4.0.4/src/BooleanOr.php 0000664 0000000 0000000 00000000477 13716532113 0020107 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BOOLEAN_OR extends PHP_Token
{
}
php-token-stream-4.0.4/src/CachingFactory.php 0000664 0000000 0000000 00000001666 13716532113 0021114 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_Stream_CachingFactory
{
/**
* @var array
*/
protected static $cache = [];
/**
* @param string $filename
*
* @return PHP_Token_Stream
*/
public static function get($filename)
{
if (!isset(self::$cache[$filename])) {
self::$cache[$filename] = new PHP_Token_Stream($filename);
}
return self::$cache[$filename];
}
/**
* @param string $filename
*/
public static function clear($filename = null)/*: void*/
{
if (\is_string($filename)) {
unset(self::$cache[$filename]);
} else {
self::$cache = [];
}
}
}
php-token-stream-4.0.4/src/Callable.php 0000664 0000000 0000000 00000000475 13716532113 0017724 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CALLABLE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Caret.php 0000664 0000000 0000000 00000000472 13716532113 0017260 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CARET extends PHP_Token
{
}
php-token-stream-4.0.4/src/Case.php 0000664 0000000 0000000 00000000471 13716532113 0017074 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CASE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Catch.php 0000664 0000000 0000000 00000000472 13716532113 0017244 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CATCH extends PHP_Token
{
}
php-token-stream-4.0.4/src/Character.php 0000664 0000000 0000000 00000000476 13716532113 0020122 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CHARACTER extends PHP_Token
{
}
php-token-stream-4.0.4/src/Class.php 0000664 0000000 0000000 00000002546 13716532113 0017273 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLASS extends PHP_Token_INTERFACE
{
/**
* @var bool
*/
private $anonymous = false;
/**
* @var string
*/
private $name;
/**
* @return string
*/
public function getName()
{
if ($this->name !== null) {
return $this->name;
}
$next = $this->tokenStream[$this->id + 1];
if ($next instanceof PHP_Token_WHITESPACE) {
$next = $this->tokenStream[$this->id + 2];
}
if ($next instanceof PHP_Token_STRING) {
$this->name =(string) $next;
return $this->name;
}
if ($next instanceof PHP_Token_OPEN_CURLY ||
$next instanceof PHP_Token_EXTENDS ||
$next instanceof PHP_Token_IMPLEMENTS) {
$this->name = \sprintf(
'AnonymousClass:%s#%s',
$this->getLine(),
$this->getId()
);
$this->anonymous = true;
return $this->name;
}
}
public function isAnonymous()
{
return $this->anonymous;
}
}
php-token-stream-4.0.4/src/ClassC.php 0000664 0000000 0000000 00000000474 13716532113 0017374 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLASS_C extends PHP_Token
{
}
php-token-stream-4.0.4/src/ClassNameConstant.php 0000664 0000000 0000000 00000000510 13716532113 0021573 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLASS_NAME_CONSTANT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Clone.php 0000664 0000000 0000000 00000000472 13716532113 0017262 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLONE extends PHP_Token
{
}
php-token-stream-4.0.4/src/CloseBracket.php 0000664 0000000 0000000 00000000502 13716532113 0020555 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLOSE_BRACKET extends PHP_Token
{
}
php-token-stream-4.0.4/src/CloseCurly.php 0000664 0000000 0000000 00000000500 13716532113 0020276 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLOSE_CURLY extends PHP_Token
{
}
php-token-stream-4.0.4/src/CloseSquare.php 0000664 0000000 0000000 00000000501 13716532113 0020441 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLOSE_SQUARE extends PHP_Token
{
}
php-token-stream-4.0.4/src/CloseTag.php 0000664 0000000 0000000 00000000476 13716532113 0017727 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CLOSE_TAG extends PHP_Token
{
}
php-token-stream-4.0.4/src/Coalesce.php 0000664 0000000 0000000 00000000475 13716532113 0017743 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_COALESCE extends PHP_Token
{
}
php-token-stream-4.0.4/src/CoalesceEqual.php 0000664 0000000 0000000 00000000503 13716532113 0020723 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_COALESCE_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Colon.php 0000664 0000000 0000000 00000000472 13716532113 0017274 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_COLON extends PHP_Token
{
}
php-token-stream-4.0.4/src/Comma.php 0000664 0000000 0000000 00000000472 13716532113 0017256 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_COMMA extends PHP_Token
{
}
php-token-stream-4.0.4/src/Comment.php 0000664 0000000 0000000 00000000474 13716532113 0017626 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_COMMENT extends PHP_Token
{
}
php-token-stream-4.0.4/src/ConcatEqual.php 0000664 0000000 0000000 00000000501 13716532113 0020412 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CONCAT_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Const.php 0000664 0000000 0000000 00000000472 13716532113 0017310 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CONST extends PHP_Token
{
}
php-token-stream-4.0.4/src/ConstantEncapsedString.php 0000664 0000000 0000000 00000000515 13716532113 0022643 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CONSTANT_ENCAPSED_STRING extends PHP_Token
{
}
php-token-stream-4.0.4/src/Continue.php 0000664 0000000 0000000 00000000475 13716532113 0020011 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CONTINUE extends PHP_Token
{
}
php-token-stream-4.0.4/src/CurlyOpen.php 0000664 0000000 0000000 00000000477 13716532113 0020147 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_CURLY_OPEN extends PHP_Token
{
}
php-token-stream-4.0.4/src/DNumber.php 0000664 0000000 0000000 00000000474 13716532113 0017560 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DNUMBER extends PHP_Token
{
}
php-token-stream-4.0.4/src/Dec.php 0000664 0000000 0000000 00000000470 13716532113 0016713 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DEC extends PHP_Token
{
}
php-token-stream-4.0.4/src/Declare.php 0000664 0000000 0000000 00000000474 13716532113 0017563 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DECLARE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Default.php 0000664 0000000 0000000 00000000474 13716532113 0017610 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DEFAULT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Dir.php 0000664 0000000 0000000 00000000470 13716532113 0016736 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DIR extends PHP_Token
{
}
php-token-stream-4.0.4/src/Div.php 0000664 0000000 0000000 00000000470 13716532113 0016742 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DIV extends PHP_Token
{
}
php-token-stream-4.0.4/src/DivEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017740 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DIV_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Do.php 0000664 0000000 0000000 00000000467 13716532113 0016570 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DO extends PHP_Token
{
}
php-token-stream-4.0.4/src/DocComment.php 0000664 0000000 0000000 00000000500 13716532113 0020242 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOC_COMMENT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Dollar.php 0000664 0000000 0000000 00000000473 13716532113 0017440 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOLLAR extends PHP_Token
{
}
php-token-stream-4.0.4/src/DollarOpenCurlyBraces.php 0000664 0000000 0000000 00000000515 13716532113 0022416 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOLLAR_OPEN_CURLY_BRACES extends PHP_Token
{
}
php-token-stream-4.0.4/src/Dot.php 0000664 0000000 0000000 00000000470 13716532113 0016746 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOT extends PHP_Token
{
}
php-token-stream-4.0.4/src/DoubleArrow.php 0000664 0000000 0000000 00000000501 13716532113 0020440 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOUBLE_ARROW extends PHP_Token
{
}
php-token-stream-4.0.4/src/DoubleCast.php 0000664 0000000 0000000 00000000500 13716532113 0020237 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOUBLE_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/DoubleColon.php 0000664 0000000 0000000 00000000501 13716532113 0020420 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOUBLE_COLON extends PHP_Token
{
}
php-token-stream-4.0.4/src/DoubleQuotes.php 0000664 0000000 0000000 00000000502 13716532113 0020627 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_DOUBLE_QUOTES extends PHP_Token
{
}
php-token-stream-4.0.4/src/Echo.php 0000664 0000000 0000000 00000000471 13716532113 0017077 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ECHO extends PHP_Token
{
}
php-token-stream-4.0.4/src/Ellipsis.php 0000664 0000000 0000000 00000000475 13716532113 0020011 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ELLIPSIS extends PHP_Token
{
}
php-token-stream-4.0.4/src/Else.php 0000664 0000000 0000000 00000000471 13716532113 0017111 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ELSE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Elseif.php 0000664 0000000 0000000 00000000473 13716532113 0017432 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ELSEIF extends PHP_Token
{
}
php-token-stream-4.0.4/src/Empty.php 0000664 0000000 0000000 00000000472 13716532113 0017320 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EMPTY extends PHP_Token
{
}
php-token-stream-4.0.4/src/EncapsedAndWhitespace.php 0000664 0000000 0000000 00000000514 13716532113 0022401 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENCAPSED_AND_WHITESPACE extends PHP_Token
{
}
php-token-stream-4.0.4/src/EndHeredoc.php 0000664 0000000 0000000 00000000500 13716532113 0020212 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_END_HEREDOC extends PHP_Token
{
}
php-token-stream-4.0.4/src/Enddeclare.php 0000664 0000000 0000000 00000000477 13716532113 0020255 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDDECLARE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Endfor.php 0000664 0000000 0000000 00000000473 13716532113 0017440 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDFOR extends PHP_Token
{
}
php-token-stream-4.0.4/src/Endforeach.php 0000664 0000000 0000000 00000000477 13716532113 0020265 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDFOREACH extends PHP_Token
{
}
php-token-stream-4.0.4/src/Endif.php 0000664 0000000 0000000 00000000472 13716532113 0017247 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDIF extends PHP_Token
{
}
php-token-stream-4.0.4/src/Endswitch.php 0000664 0000000 0000000 00000000476 13716532113 0020156 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDSWITCH extends PHP_Token
{
}
php-token-stream-4.0.4/src/Endwhile.php 0000664 0000000 0000000 00000000475 13716532113 0017764 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ENDWHILE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Equal.php 0000664 0000000 0000000 00000000472 13716532113 0017271 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Eval.php 0000664 0000000 0000000 00000000471 13716532113 0017110 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EVAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/ExclamationMark.php 0000664 0000000 0000000 00000000505 13716532113 0021276 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EXCLAMATION_MARK extends PHP_Token
{
}
php-token-stream-4.0.4/src/Exit.php 0000664 0000000 0000000 00000000471 13716532113 0017132 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EXIT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Extends.php 0000664 0000000 0000000 00000000474 13716532113 0017636 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_EXTENDS extends PHP_Token
{
}
php-token-stream-4.0.4/src/File.php 0000664 0000000 0000000 00000000471 13716532113 0017100 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FILE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Final.php 0000664 0000000 0000000 00000000472 13716532113 0017253 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FINAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Finally.php 0000664 0000000 0000000 00000000474 13716532113 0017622 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FINALLY extends PHP_Token
{
}
php-token-stream-4.0.4/src/Fn.php 0000664 0000000 0000000 00000000467 13716532113 0016571 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FN extends PHP_Token
{
}
php-token-stream-4.0.4/src/For.php 0000664 0000000 0000000 00000000470 13716532113 0016746 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FOR extends PHP_Token
{
}
php-token-stream-4.0.4/src/Foreach.php 0000664 0000000 0000000 00000000474 13716532113 0017573 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FOREACH extends PHP_Token
{
}
php-token-stream-4.0.4/src/FuncC.php 0000664 0000000 0000000 00000000473 13716532113 0017221 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FUNC_C extends PHP_Token
{
}
php-token-stream-4.0.4/src/Function.php 0000664 0000000 0000000 00000011404 13716532113 0020004 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility
{
/**
* @var array
*/
protected $arguments;
/**
* @var int
*/
protected $ccn;
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $signature;
/**
* @var bool
*/
private $anonymous = false;
/**
* @return array
*/
public function getArguments()
{
if ($this->arguments !== null) {
return $this->arguments;
}
$this->arguments = [];
$tokens = $this->tokenStream->tokens();
$typeDeclaration = null;
// Search for first token inside brackets
$i = $this->id + 2;
while (!$tokens[$i - 1] instanceof PHP_Token_OPEN_BRACKET) {
$i++;
}
while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) {
if ($tokens[$i] instanceof PHP_Token_STRING) {
$typeDeclaration = (string) $tokens[$i];
} elseif ($tokens[$i] instanceof PHP_Token_VARIABLE) {
$this->arguments[(string) $tokens[$i]] = $typeDeclaration;
$typeDeclaration = null;
}
$i++;
}
return $this->arguments;
}
/**
* @return string
*/
public function getName()
{
if ($this->name !== null) {
return $this->name;
}
$tokens = $this->tokenStream->tokens();
$i = $this->id + 1;
if ($tokens[$i] instanceof PHP_Token_WHITESPACE) {
$i++;
}
if ($tokens[$i] instanceof PHP_Token_AMPERSAND) {
$i++;
}
if ($tokens[$i + 1] instanceof PHP_Token_OPEN_BRACKET) {
$this->name = (string) $tokens[$i];
} elseif ($tokens[$i + 1] instanceof PHP_Token_WHITESPACE && $tokens[$i + 2] instanceof PHP_Token_OPEN_BRACKET) {
$this->name = (string) $tokens[$i];
} else {
$this->anonymous = true;
$this->name = \sprintf(
'anonymousFunction:%s#%s',
$this->getLine(),
$this->getId()
);
}
if (!$this->isAnonymous()) {
for ($i = $this->id; $i; --$i) {
if ($tokens[$i] instanceof PHP_Token_NAMESPACE) {
$this->name = $tokens[$i]->getName() . '\\' . $this->name;
break;
}
if ($tokens[$i] instanceof PHP_Token_INTERFACE) {
break;
}
}
}
return $this->name;
}
/**
* @return int
*/
public function getCCN()
{
if ($this->ccn !== null) {
return $this->ccn;
}
$this->ccn = 1;
$end = $this->getEndTokenId();
$tokens = $this->tokenStream->tokens();
for ($i = $this->id; $i <= $end; $i++) {
switch (\get_class($tokens[$i])) {
case PHP_Token_IF::class:
case PHP_Token_ELSEIF::class:
case PHP_Token_FOR::class:
case PHP_Token_FOREACH::class:
case PHP_Token_WHILE::class:
case PHP_Token_CASE::class:
case PHP_Token_CATCH::class:
case PHP_Token_BOOLEAN_AND::class:
case PHP_Token_LOGICAL_AND::class:
case PHP_Token_BOOLEAN_OR::class:
case PHP_Token_LOGICAL_OR::class:
case PHP_Token_QUESTION_MARK::class:
$this->ccn++;
break;
}
}
return $this->ccn;
}
/**
* @return string
*/
public function getSignature()
{
if ($this->signature !== null) {
return $this->signature;
}
if ($this->isAnonymous()) {
$this->signature = 'anonymousFunction';
$i = $this->id + 1;
} else {
$this->signature = '';
$i = $this->id + 2;
}
$tokens = $this->tokenStream->tokens();
while (isset($tokens[$i]) &&
!$tokens[$i] instanceof PHP_Token_OPEN_CURLY &&
!$tokens[$i] instanceof PHP_Token_SEMICOLON) {
$this->signature .= $tokens[$i++];
}
$this->signature = \trim($this->signature);
return $this->signature;
}
/**
* @return bool
*/
public function isAnonymous()
{
return $this->anonymous;
}
}
php-token-stream-4.0.4/src/Global.php 0000664 0000000 0000000 00000000473 13716532113 0017423 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_GLOBAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Goto.php 0000664 0000000 0000000 00000000471 13716532113 0017131 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_GOTO extends PHP_Token
{
}
php-token-stream-4.0.4/src/Gt.php 0000664 0000000 0000000 00000000467 13716532113 0016600 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_GT extends PHP_Token
{
}
php-token-stream-4.0.4/src/HaltCompiler.php 0000664 0000000 0000000 00000000502 13716532113 0020577 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_HALT_COMPILER extends PHP_Token
{
}
php-token-stream-4.0.4/src/If.php 0000664 0000000 0000000 00000000467 13716532113 0016564 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IF extends PHP_Token
{
}
php-token-stream-4.0.4/src/Implements.php 0000664 0000000 0000000 00000000477 13716532113 0020344 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IMPLEMENTS extends PHP_Token
{
}
php-token-stream-4.0.4/src/Inc.php 0000664 0000000 0000000 00000000470 13716532113 0016731 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INC extends PHP_Token
{
}
php-token-stream-4.0.4/src/Include.php 0000664 0000000 0000000 00000000505 13716532113 0017602 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INCLUDE extends PHP_Token_Includes
{
}
php-token-stream-4.0.4/src/IncludeOnce.php 0000664 0000000 0000000 00000000512 13716532113 0020405 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INCLUDE_ONCE extends PHP_Token_Includes
{
}
php-token-stream-4.0.4/src/Includes.php 0000664 0000000 0000000 00000002310 13716532113 0017761 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
abstract class PHP_Token_Includes extends PHP_Token
{
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $type;
/**
* @return string
*/
public function getName()
{
if ($this->name === null) {
$this->process();
}
return $this->name;
}
/**
* @return string
*/
public function getType()
{
if ($this->type === null) {
$this->process();
}
return $this->type;
}
private function process(): void
{
$tokens = $this->tokenStream->tokens();
if ($tokens[$this->id + 2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) {
$this->name = \trim((string) $tokens[$this->id + 2], "'\"");
$this->type = \strtolower(
\str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$this->id]))
);
}
}
}
php-token-stream-4.0.4/src/InlineHtml.php 0000664 0000000 0000000 00000000500 13716532113 0020255 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INLINE_HTML extends PHP_Token
{
}
php-token-stream-4.0.4/src/Instanceof.php 0000664 0000000 0000000 00000000477 13716532113 0020320 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INSTANCEOF extends PHP_Token
{
}
php-token-stream-4.0.4/src/Insteadof.php 0000664 0000000 0000000 00000000476 13716532113 0020142 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INSTEADOF extends PHP_Token
{
}
php-token-stream-4.0.4/src/IntCast.php 0000664 0000000 0000000 00000000475 13716532113 0017572 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INT_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/Interface.php 0000664 0000000 0000000 00000007764 13716532113 0020135 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility
{
/**
* @var array
*/
protected $interfaces;
/**
* @return string
*/
public function getName()
{
return (string) $this->tokenStream[$this->id + 2];
}
/**
* @return bool
*/
public function hasParent()
{
return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS;
}
/**
* @return array
*/
public function getPackage()
{
$result = [
'namespace' => '',
'fullPackage' => '',
'category' => '',
'package' => '',
'subpackage' => '',
];
$docComment = $this->getDocblock();
$className = $this->getName();
for ($i = $this->id; $i; --$i) {
if ($this->tokenStream[$i] instanceof PHP_Token_NAMESPACE) {
$result['namespace'] = $this->tokenStream[$i]->getName();
break;
}
}
if ($docComment === null) {
return $result;
}
if (\preg_match('/@category[\s]+([\.\w]+)/', $docComment, $matches)) {
$result['category'] = $matches[1];
}
if (\preg_match('/@package[\s]+([\.\w]+)/', $docComment, $matches)) {
$result['package'] = $matches[1];
$result['fullPackage'] = $matches[1];
}
if (\preg_match('/@subpackage[\s]+([\.\w]+)/', $docComment, $matches)) {
$result['subpackage'] = $matches[1];
$result['fullPackage'] .= '.' . $matches[1];
}
if (empty($result['fullPackage'])) {
$result['fullPackage'] = $this->arrayToName(
\explode('_', \str_replace('\\', '_', $className)),
'.'
);
}
return $result;
}
/**
* @return bool|string
*/
public function getParent()
{
if (!$this->hasParent()) {
return false;
}
$i = $this->id + 6;
$tokens = $this->tokenStream->tokens();
$className = (string) $tokens[$i];
while (isset($tokens[$i + 1]) &&
!$tokens[$i + 1] instanceof PHP_Token_WHITESPACE) {
$className .= (string) $tokens[++$i];
}
return $className;
}
/**
* @return bool
*/
public function hasInterfaces()
{
return (isset($this->tokenStream[$this->id + 4]) &&
$this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) ||
(isset($this->tokenStream[$this->id + 8]) &&
$this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS);
}
/**
* @return array|bool
*/
public function getInterfaces()
{
if ($this->interfaces !== null) {
return $this->interfaces;
}
if (!$this->hasInterfaces()) {
return $this->interfaces = false;
}
if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) {
$i = $this->id + 3;
} else {
$i = $this->id + 7;
}
$tokens = $this->tokenStream->tokens();
while (!$tokens[$i + 1] instanceof PHP_Token_OPEN_CURLY) {
$i++;
if ($tokens[$i] instanceof PHP_Token_STRING) {
$this->interfaces[] = (string) $tokens[$i];
}
}
return $this->interfaces;
}
/**
* @param string $join
*
* @return string
*/
protected function arrayToName(array $parts, $join = '\\')
{
$result = '';
if (\count($parts) > 1) {
\array_pop($parts);
$result = \implode($join, $parts);
}
return $result;
}
}
php-token-stream-4.0.4/src/IsEqual.php 0000664 0000000 0000000 00000000475 13716532113 0017570 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/IsGreaterOrEqual.php 0000664 0000000 0000000 00000000510 13716532113 0021371 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_GREATER_OR_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/IsIdentical.php 0000664 0000000 0000000 00000000501 13716532113 0020403 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_IDENTICAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/IsNotEqual.php 0000664 0000000 0000000 00000000501 13716532113 0020237 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_NOT_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/IsNotIdentical.php 0000664 0000000 0000000 00000000505 13716532113 0021070 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_NOT_IDENTICAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/IsSmallerOrEqual.php 0000664 0000000 0000000 00000000510 13716532113 0021377 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_IS_SMALLER_OR_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Isset.php 0000664 0000000 0000000 00000000472 13716532113 0017311 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_ISSET extends PHP_Token
{
}
php-token-stream-4.0.4/src/Line.php 0000664 0000000 0000000 00000000471 13716532113 0017110 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LINE extends PHP_Token
{
}
php-token-stream-4.0.4/src/List.php 0000664 0000000 0000000 00000000471 13716532113 0017134 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LIST extends PHP_Token
{
}
php-token-stream-4.0.4/src/Lnumber.php 0000664 0000000 0000000 00000000474 13716532113 0017630 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LNUMBER extends PHP_Token
{
}
php-token-stream-4.0.4/src/LogicalAnd.php 0000664 0000000 0000000 00000000500 13716532113 0020207 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LOGICAL_AND extends PHP_Token
{
}
php-token-stream-4.0.4/src/LogicalOr.php 0000664 0000000 0000000 00000000477 13716532113 0020102 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LOGICAL_OR extends PHP_Token
{
}
php-token-stream-4.0.4/src/LogicalXor.php 0000664 0000000 0000000 00000000500 13716532113 0020255 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LOGICAL_XOR extends PHP_Token
{
}
php-token-stream-4.0.4/src/Lt.php 0000664 0000000 0000000 00000000467 13716532113 0016605 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_LT extends PHP_Token
{
}
php-token-stream-4.0.4/src/MethodC.php 0000664 0000000 0000000 00000000475 13716532113 0017550 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_METHOD_C extends PHP_Token
{
}
php-token-stream-4.0.4/src/Minus.php 0000664 0000000 0000000 00000000472 13716532113 0017315 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_MINUS extends PHP_Token
{
}
php-token-stream-4.0.4/src/MinusEqual.php 0000664 0000000 0000000 00000000500 13716532113 0020275 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_MINUS_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/ModEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017735 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_MOD_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/MulEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017753 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_MUL_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Mult.php 0000664 0000000 0000000 00000000471 13716532113 0017142 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_MULT extends PHP_Token
{
}
php-token-stream-4.0.4/src/NameFullyQualified.php 0000664 0000000 0000000 00000000511 13716532113 0021734 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NAME_FULLY_QUALIFIED extends PHP_Token
{
}
php-token-stream-4.0.4/src/NameQualified.php 0000664 0000000 0000000 00000000503 13716532113 0020721 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NAME_QUALIFIED extends PHP_Token
{
}
php-token-stream-4.0.4/src/NameRelative.php 0000664 0000000 0000000 00000000502 13716532113 0020570 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NAME_RELATIVE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Namespace.php 0000664 0000000 0000000 00000001453 13716532113 0020116 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NAMESPACE extends PHP_TokenWithScope
{
/**
* @return string
*/
public function getName()
{
$tokens = $this->tokenStream->tokens();
$namespace = (string) $tokens[$this->id + 2];
for ($i = $this->id + 3;; $i += 2) {
if (isset($tokens[$i]) &&
$tokens[$i] instanceof PHP_Token_NS_SEPARATOR) {
$namespace .= '\\' . $tokens[$i + 1];
} else {
break;
}
}
return $namespace;
}
}
php-token-stream-4.0.4/src/New.php 0000664 0000000 0000000 00000000470 13716532113 0016751 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NEW extends PHP_Token
{
}
php-token-stream-4.0.4/src/NsC.php 0000664 0000000 0000000 00000000471 13716532113 0016704 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NS_C extends PHP_Token
{
}
php-token-stream-4.0.4/src/NsSeparator.php 0000664 0000000 0000000 00000000501 13716532113 0020454 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NS_SEPARATOR extends PHP_Token
{
}
php-token-stream-4.0.4/src/NumString.php 0000664 0000000 0000000 00000000477 13716532113 0020155 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_NUM_STRING extends PHP_Token
{
}
php-token-stream-4.0.4/src/ObjectCast.php 0000664 0000000 0000000 00000000500 13716532113 0020233 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OBJECT_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/ObjectOperator.php 0000664 0000000 0000000 00000000504 13716532113 0021140 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OBJECT_OPERATOR extends PHP_Token
{
}
php-token-stream-4.0.4/src/OpenBracket.php 0000664 0000000 0000000 00000000501 13716532113 0020410 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OPEN_BRACKET extends PHP_Token
{
}
php-token-stream-4.0.4/src/OpenCurly.php 0000664 0000000 0000000 00000000477 13716532113 0020147 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OPEN_CURLY extends PHP_Token
{
}
php-token-stream-4.0.4/src/OpenSquare.php 0000664 0000000 0000000 00000000500 13716532113 0020274 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OPEN_SQUARE extends PHP_Token
{
}
php-token-stream-4.0.4/src/OpenTag.php 0000664 0000000 0000000 00000000475 13716532113 0017562 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OPEN_TAG extends PHP_Token
{
}
php-token-stream-4.0.4/src/OpenTagWithEcho.php 0000664 0000000 0000000 00000000507 13716532113 0021211 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OPEN_TAG_WITH_ECHO extends PHP_Token
{
}
php-token-stream-4.0.4/src/OrEqual.php 0000664 0000000 0000000 00000000475 13716532113 0017575 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_OR_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/PaamayimNekudotayim.php 0000664 0000000 0000000 00000000511 13716532113 0022164 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PAAMAYIM_NEKUDOTAYIM extends PHP_Token
{
}
php-token-stream-4.0.4/src/Percent.php 0000664 0000000 0000000 00000000474 13716532113 0017624 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PERCENT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Pipe.php 0000664 0000000 0000000 00000000471 13716532113 0017116 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PIPE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Plus.php 0000664 0000000 0000000 00000000471 13716532113 0017144 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PLUS extends PHP_Token
{
}
php-token-stream-4.0.4/src/PlusEqual.php 0000664 0000000 0000000 00000000477 13716532113 0020142 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PLUS_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Pow.php 0000664 0000000 0000000 00000000470 13716532113 0016765 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_POW extends PHP_Token
{
}
php-token-stream-4.0.4/src/PowEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017763 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_POW_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Print.php 0000664 0000000 0000000 00000000472 13716532113 0017316 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PRINT extends PHP_Token
{
}
php-token-stream-4.0.4/src/Private.php 0000664 0000000 0000000 00000000474 13716532113 0017636 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PRIVATE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Protected.php 0000664 0000000 0000000 00000000476 13716532113 0020157 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PROTECTED extends PHP_Token
{
}
php-token-stream-4.0.4/src/Public.php 0000664 0000000 0000000 00000000473 13716532113 0017441 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_PUBLIC extends PHP_Token
{
}
php-token-stream-4.0.4/src/QuestionMark.php 0000664 0000000 0000000 00000000502 13716532113 0020636 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_QUESTION_MARK extends PHP_Token
{
}
php-token-stream-4.0.4/src/Require.php 0000664 0000000 0000000 00000000505 13716532113 0017633 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_REQUIRE extends PHP_Token_Includes
{
}
php-token-stream-4.0.4/src/RequireOnce.php 0000664 0000000 0000000 00000000512 13716532113 0020436 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_REQUIRE_ONCE extends PHP_Token_Includes
{
}
php-token-stream-4.0.4/src/Return.php 0000664 0000000 0000000 00000000473 13716532113 0017502 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_RETURN extends PHP_Token
{
}
php-token-stream-4.0.4/src/Semicolon.php 0000664 0000000 0000000 00000000476 13716532113 0020156 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SEMICOLON extends PHP_Token
{
}
php-token-stream-4.0.4/src/Sl.php 0000664 0000000 0000000 00000000467 13716532113 0016604 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SL extends PHP_Token
{
}
php-token-stream-4.0.4/src/SlEqual.php 0000664 0000000 0000000 00000000475 13716532113 0017573 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SL_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Spaceship.php 0000664 0000000 0000000 00000000476 13716532113 0020145 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SPACESHIP extends PHP_Token
{
}
php-token-stream-4.0.4/src/Sr.php 0000664 0000000 0000000 00000000467 13716532113 0016612 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SR extends PHP_Token
{
}
php-token-stream-4.0.4/src/SrEqual.php 0000664 0000000 0000000 00000000475 13716532113 0017601 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SR_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/StartHeredoc.php 0000664 0000000 0000000 00000000502 13716532113 0020603 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_START_HEREDOC extends PHP_Token
{
}
php-token-stream-4.0.4/src/Static.php 0000664 0000000 0000000 00000000473 13716532113 0017452 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_STATIC extends PHP_Token
{
}
php-token-stream-4.0.4/src/Stream.php 0000664 0000000 0000000 00000044175 13716532113 0017465 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_Stream implements ArrayAccess, Countable, SeekableIterator
{
/**
* @var array>
*/
protected static $customTokens = [
'(' => PHP_Token_OPEN_BRACKET::class,
')' => PHP_Token_CLOSE_BRACKET::class,
'[' => PHP_Token_OPEN_SQUARE::class,
']' => PHP_Token_CLOSE_SQUARE::class,
'{' => PHP_Token_OPEN_CURLY::class,
'}' => PHP_Token_CLOSE_CURLY::class,
';' => PHP_Token_SEMICOLON::class,
'.' => PHP_Token_DOT::class,
',' => PHP_Token_COMMA::class,
'=' => PHP_Token_EQUAL::class,
'<' => PHP_Token_LT::class,
'>' => PHP_Token_GT::class,
'+' => PHP_Token_PLUS::class,
'-' => PHP_Token_MINUS::class,
'*' => PHP_Token_MULT::class,
'/' => PHP_Token_DIV::class,
'?' => PHP_Token_QUESTION_MARK::class,
'!' => PHP_Token_EXCLAMATION_MARK::class,
':' => PHP_Token_COLON::class,
'"' => PHP_Token_DOUBLE_QUOTES::class,
'@' => PHP_Token_AT::class,
'&' => PHP_Token_AMPERSAND::class,
'%' => PHP_Token_PERCENT::class,
'|' => PHP_Token_PIPE::class,
'$' => PHP_Token_DOLLAR::class,
'^' => PHP_Token_CARET::class,
'~' => PHP_Token_TILDE::class,
'`' => PHP_Token_BACKTICK::class,
];
/**
* @var string
*/
protected $filename;
/**
* @var array
*/
protected $tokens = [];
/**
* @var array
*/
protected $tokensByLine = [];
/**
* @var int
*/
protected $position = 0;
/**
* @var array
*/
protected $linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0];
/**
* @var array
*/
protected $classes;
/**
* @var array
*/
protected $functions;
/**
* @var array
*/
protected $includes;
/**
* @var array
*/
protected $interfaces;
/**
* @var array
*/
protected $traits;
/**
* @var array
*/
protected $lineToFunctionMap = [];
/**
* Constructor.
*
* @param string $sourceCode
*/
public function __construct($sourceCode)
{
if (\is_file($sourceCode)) {
$this->filename = $sourceCode;
$sourceCode = \file_get_contents($sourceCode);
}
$this->scan($sourceCode);
}
/**
* Destructor.
*/
public function __destruct()
{
$this->tokens = [];
$this->tokensByLine = [];
}
/**
* @return string
*/
public function __toString()
{
$buffer = '';
foreach ($this as $token) {
$buffer .= $token;
}
return $buffer;
}
/**
* @return string
*/
public function getFilename()
{
return $this->filename;
}
/**
* @return int
*/
public function count()
{
return \count($this->tokens);
}
/**
* @return PHP_Token[]
*/
public function tokens()
{
return $this->tokens;
}
/**
* @return array
*/
public function getClasses()
{
if ($this->classes !== null) {
return $this->classes;
}
$this->parse();
return $this->classes;
}
/**
* @return array
*/
public function getFunctions()
{
if ($this->functions !== null) {
return $this->functions;
}
$this->parse();
return $this->functions;
}
/**
* @return array
*/
public function getInterfaces()
{
if ($this->interfaces !== null) {
return $this->interfaces;
}
$this->parse();
return $this->interfaces;
}
/**
* @return array
*/
public function getTraits()
{
if ($this->traits !== null) {
return $this->traits;
}
$this->parse();
return $this->traits;
}
/**
* Gets the names of all files that have been included
* using include(), include_once(), require() or require_once().
*
* Parameter $categorize set to TRUE causing this function to return a
* multi-dimensional array with categories in the keys of the first dimension
* and constants and their values in the second dimension.
*
* Parameter $category allow to filter following specific inclusion type
*
* @param bool $categorize OPTIONAL
* @param string $category OPTIONAL Either 'require_once', 'require',
* 'include_once', 'include'
*
* @return array
*/
public function getIncludes($categorize = false, $category = null)
{
if ($this->includes === null) {
$this->includes = [
'require_once' => [],
'require' => [],
'include_once' => [],
'include' => [],
];
foreach ($this->tokens as $token) {
switch (\get_class($token)) {
case PHP_Token_REQUIRE_ONCE::class:
case PHP_Token_REQUIRE::class:
case PHP_Token_INCLUDE_ONCE::class:
case PHP_Token_INCLUDE::class:
$this->includes[$token->getType()][] = $token->getName();
break;
}
}
}
if (isset($this->includes[$category])) {
$includes = $this->includes[$category];
} elseif ($categorize === false) {
$includes = \array_merge(
$this->includes['require_once'],
$this->includes['require'],
$this->includes['include_once'],
$this->includes['include']
);
} else {
$includes = $this->includes;
}
return $includes;
}
/**
* Returns the name of the function or method a line belongs to.
*
* @return string or null if the line is not in a function or method
*/
public function getFunctionForLine($line)
{
$this->parse();
if (isset($this->lineToFunctionMap[$line])) {
return $this->lineToFunctionMap[$line];
}
}
/**
* @return array
*/
public function getLinesOfCode()
{
return $this->linesOfCode;
}
public function rewind()/*: void*/
{
$this->position = 0;
}
/**
* @return bool
*/
public function valid()
{
return isset($this->tokens[$this->position]);
}
/**
* @return int
*/
public function key()
{
return $this->position;
}
/**
* @return PHP_Token
*/
public function current()
{
return $this->tokens[$this->position];
}
public function next()/*: void*/
{
$this->position++;
}
/**
* @param int $offset
*
* @return bool
*/
public function offsetExists($offset)
{
return isset($this->tokens[$offset]);
}
/**
* @param int $offset
*
* @throws OutOfBoundsException
*/
public function offsetGet($offset)
{
if (!$this->offsetExists($offset)) {
throw new OutOfBoundsException(
\sprintf(
'No token at position "%s"',
$offset
)
);
}
return $this->tokens[$offset];
}
/**
* @param int $offset
*/
public function offsetSet($offset, $value)/*: void*/
{
$this->tokens[$offset] = $value;
}
/**
* @param int $offset
*
* @throws OutOfBoundsException
*/
public function offsetUnset($offset)/*: void*/
{
if (!$this->offsetExists($offset)) {
throw new OutOfBoundsException(
\sprintf(
'No token at position "%s"',
$offset
)
);
}
unset($this->tokens[$offset]);
}
/**
* Seek to an absolute position.
*
* @param int $position
*
* @throws OutOfBoundsException
*/
public function seek($position)/*: void*/
{
$this->position = $position;
if (!$this->valid()) {
throw new OutOfBoundsException(
\sprintf(
'No token at position "%s"',
$this->position
)
);
}
}
/**
* Scans the source for sequences of characters and converts them into a
* stream of tokens.
*
* @param string $sourceCode
*/
protected function scan($sourceCode)/*: void*/
{
$id = 0;
$line = 1;
$tokens = \token_get_all($sourceCode);
$numTokens = \count($tokens);
$lastNonWhitespaceTokenWasDoubleColon = false;
$name = null;
for ($i = 0; $i < $numTokens; ++$i) {
$token = $tokens[$i];
$skip = 0;
if (\is_array($token)) {
$name = \substr(\token_name($token[0]), 2);
$text = $token[1];
if ($lastNonWhitespaceTokenWasDoubleColon && $name == 'CLASS') {
$name = 'CLASS_NAME_CONSTANT';
} elseif ($name == 'USE' && isset($tokens[$i + 2][0]) && $tokens[$i + 2][0] == \T_FUNCTION) {
$name = 'USE_FUNCTION';
$text .= $tokens[$i + 1][1] . $tokens[$i + 2][1];
$skip = 2;
}
/** @var class-string $tokenClass */
$tokenClass = 'PHP_Token_' . $name;
} else {
$text = $token;
$tokenClass = self::$customTokens[$token];
}
/*
* @see https://github.com/sebastianbergmann/php-token-stream/issues/95
*/
if (PHP_MAJOR_VERSION >= 8 &&
$name === 'WHITESPACE' && // Current token is T_WHITESPACE
isset($this->tokens[$id - 1]) && // Current token is not the first token
$this->tokens[$id - 1] instanceof PHP_Token_COMMENT && // Previous token is T_COMMENT
strpos((string) $this->tokens[$id - 1], '/*') === false && // Previous token is comment that starts with '#' or '//'
strpos($text, "\n") === 0 // Text of current token begins with newline
) {
$this->tokens[$id - 1] = new PHP_Token_COMMENT(
$this->tokens[$id - 1] . "\n",
$this->tokens[$id - 1]->getLine(),
$this,
$id - 1
);
$text = substr($text, 1);
$line++;
if (empty($text)) {
continue;
}
}
if (!isset($this->tokensByLine[$line])) {
$this->tokensByLine[$line] = [];
}
$token = new $tokenClass($text, $line, $this, $id++);
$this->tokens[] = $token;
$this->tokensByLine[$line][] = $token;
$line += \substr_count($text, "\n");
if ($tokenClass == PHP_Token_HALT_COMPILER::class) {
break;
}
if ($name == 'DOUBLE_COLON') {
$lastNonWhitespaceTokenWasDoubleColon = true;
} elseif ($name != 'WHITESPACE') {
$lastNonWhitespaceTokenWasDoubleColon = false;
}
$i += $skip;
}
foreach ($this->tokens as $token) {
if (!$token instanceof PHP_Token_COMMENT && !$token instanceof PHP_Token_DOC_COMMENT) {
continue;
}
foreach ($this->tokensByLine[$token->getLine()] as $_token) {
if (!$_token instanceof PHP_Token_COMMENT && !$_token instanceof PHP_Token_DOC_COMMENT && !$_token instanceof PHP_Token_WHITESPACE) {
continue 2;
}
}
$this->linesOfCode['cloc'] += max(1, \substr_count((string) $token, "\n"));
}
$this->linesOfCode['loc'] = \substr_count($sourceCode, "\n");
$this->linesOfCode['ncloc'] = $this->linesOfCode['loc'] -
$this->linesOfCode['cloc'];
}
protected function parse()/*: void*/
{
$this->interfaces = [];
$this->classes = [];
$this->traits = [];
$this->functions = [];
$class = [];
$classEndLine = [];
$trait = false;
$traitEndLine = false;
$interface = false;
$interfaceEndLine = false;
foreach ($this->tokens as $token) {
switch (\get_class($token)) {
case PHP_Token_HALT_COMPILER::class:
return;
case PHP_Token_INTERFACE::class:
$interface = $token->getName();
$interfaceEndLine = $token->getEndLine();
$this->interfaces[$interface] = [
'methods' => [],
'parent' => $token->getParent(),
'keywords' => $token->getKeywords(),
'docblock' => $token->getDocblock(),
'startLine' => $token->getLine(),
'endLine' => $interfaceEndLine,
'package' => $token->getPackage(),
'file' => $this->filename,
];
break;
case PHP_Token_CLASS::class:
case PHP_Token_TRAIT::class:
$tmp = [
'methods' => [],
'parent' => $token->getParent(),
'interfaces'=> $token->getInterfaces(),
'keywords' => $token->getKeywords(),
'docblock' => $token->getDocblock(),
'startLine' => $token->getLine(),
'endLine' => $token->getEndLine(),
'package' => $token->getPackage(),
'file' => $this->filename,
];
if ($token instanceof PHP_Token_CLASS) {
$class[] = $token->getName();
$classEndLine[] = $token->getEndLine();
if ($token->getName() !== null) {
$this->classes[$class[\count($class) - 1]] = $tmp;
}
} else {
$trait = $token->getName();
$traitEndLine = $token->getEndLine();
$this->traits[$trait] = $tmp;
}
break;
case PHP_Token_FUNCTION::class:
$name = $token->getName();
$tmp = [
'docblock' => $token->getDocblock(),
'keywords' => $token->getKeywords(),
'visibility'=> $token->getVisibility(),
'signature' => $token->getSignature(),
'startLine' => $token->getLine(),
'endLine' => $token->getEndLine(),
'ccn' => $token->getCCN(),
'file' => $this->filename,
];
if (empty($class) &&
$trait === false &&
$interface === false) {
$this->functions[$name] = $tmp;
$this->addFunctionToMap(
$name,
$tmp['startLine'],
$tmp['endLine']
);
} elseif (!empty($class)) {
if ($class[\count($class) - 1] !== null) {
$this->classes[$class[\count($class) - 1]]['methods'][$name] = $tmp;
$this->addFunctionToMap(
$class[\count($class) - 1] . '::' . $name,
$tmp['startLine'],
$tmp['endLine']
);
}
} elseif ($trait !== false) {
$this->traits[$trait]['methods'][$name] = $tmp;
$this->addFunctionToMap(
$trait . '::' . $name,
$tmp['startLine'],
$tmp['endLine']
);
} else {
$this->interfaces[$interface]['methods'][$name] = $tmp;
}
break;
case PHP_Token_CLOSE_CURLY::class:
if (!empty($classEndLine) &&
$classEndLine[\count($classEndLine) - 1] == $token->getLine()) {
\array_pop($classEndLine);
\array_pop($class);
} elseif ($traitEndLine !== false &&
$traitEndLine == $token->getLine()) {
$trait = false;
$traitEndLine = false;
} elseif ($interfaceEndLine !== false &&
$interfaceEndLine == $token->getLine()) {
$interface = false;
$interfaceEndLine = false;
}
break;
}
}
}
/**
* @param string $name
* @param int $startLine
* @param int $endLine
*/
private function addFunctionToMap($name, $startLine, $endLine): void
{
for ($line = $startLine; $line <= $endLine; $line++) {
$this->lineToFunctionMap[$line] = $name;
}
}
}
php-token-stream-4.0.4/src/String.php 0000664 0000000 0000000 00000000473 13716532113 0017471 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_STRING extends PHP_Token
{
}
php-token-stream-4.0.4/src/StringCast.php 0000664 0000000 0000000 00000000500 13716532113 0020273 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_STRING_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/StringVarname.php 0000664 0000000 0000000 00000000503 13716532113 0020775 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_STRING_VARNAME extends PHP_Token
{
}
php-token-stream-4.0.4/src/Switch.php 0000664 0000000 0000000 00000000473 13716532113 0017464 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_SWITCH extends PHP_Token
{
}
php-token-stream-4.0.4/src/Throw.php 0000664 0000000 0000000 00000000472 13716532113 0017325 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_THROW extends PHP_Token
{
}
php-token-stream-4.0.4/src/Tilde.php 0000664 0000000 0000000 00000000472 13716532113 0017263 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_TILDE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Token.php 0000664 0000000 0000000 00000002252 13716532113 0017300 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
abstract class PHP_Token
{
/**
* @var string
*/
protected $text;
/**
* @var int
*/
protected $line;
/**
* @var PHP_Token_Stream
*/
protected $tokenStream;
/**
* @var int
*/
protected $id;
/**
* @param string $text
* @param int $line
* @param int $id
*/
public function __construct($text, $line, PHP_Token_Stream $tokenStream, $id)
{
$this->text = $text;
$this->line = $line;
$this->tokenStream = $tokenStream;
$this->id = $id;
}
/**
* @return string
*/
public function __toString()
{
return $this->text;
}
/**
* @return int
*/
public function getLine()
{
return $this->line;
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
}
php-token-stream-4.0.4/src/TokenWithScope.php 0000664 0000000 0000000 00000006037 13716532113 0021133 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
abstract class PHP_TokenWithScope extends PHP_Token
{
/**
* @var int
*/
protected $endTokenId;
/**
* Get the docblock for this token.
*
* This method will fetch the docblock belonging to the current token. The
* docblock must be placed on the line directly above the token to be
* recognized.
*
* @return null|string Returns the docblock as a string if found
*/
public function getDocblock()
{
$tokens = $this->tokenStream->tokens();
$currentLineNumber = $tokens[$this->id]->getLine();
$prevLineNumber = $currentLineNumber - 1;
for ($i = $this->id - 1; $i; $i--) {
if (!isset($tokens[$i])) {
return;
}
if ($tokens[$i] instanceof PHP_Token_FUNCTION ||
$tokens[$i] instanceof PHP_Token_CLASS ||
$tokens[$i] instanceof PHP_Token_TRAIT) {
// Some other trait, class or function, no docblock can be
// used for the current token
break;
}
$line = $tokens[$i]->getLine();
if ($line == $currentLineNumber ||
($line == $prevLineNumber &&
$tokens[$i] instanceof PHP_Token_WHITESPACE)) {
continue;
}
if ($line < $currentLineNumber &&
!$tokens[$i] instanceof PHP_Token_DOC_COMMENT) {
break;
}
return (string) $tokens[$i];
}
}
/**
* @return int
*/
public function getEndTokenId()
{
$block = 0;
$i = $this->id;
$tokens = $this->tokenStream->tokens();
while ($this->endTokenId === null && isset($tokens[$i])) {
if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY ||
$tokens[$i] instanceof PHP_Token_DOLLAR_OPEN_CURLY_BRACES ||
$tokens[$i] instanceof PHP_Token_CURLY_OPEN) {
$block++;
} elseif ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) {
$block--;
if ($block === 0) {
$this->endTokenId = $i;
}
} elseif (($this instanceof PHP_Token_FUNCTION ||
$this instanceof PHP_Token_NAMESPACE) &&
$tokens[$i] instanceof PHP_Token_SEMICOLON) {
if ($block === 0) {
$this->endTokenId = $i;
}
}
$i++;
}
if ($this->endTokenId === null) {
$this->endTokenId = $this->id;
}
return $this->endTokenId;
}
/**
* @return int
*/
public function getEndLine()
{
return $this->tokenStream[$this->getEndTokenId()]->getLine();
}
}
php-token-stream-4.0.4/src/TokenWithScopeAndVisibility.php 0000664 0000000 0000000 00000004233 13716532113 0023622 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope
{
/**
* @return string
*/
public function getVisibility()
{
$tokens = $this->tokenStream->tokens();
for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
if (isset($tokens[$i]) &&
($tokens[$i] instanceof PHP_Token_PRIVATE ||
$tokens[$i] instanceof PHP_Token_PROTECTED ||
$tokens[$i] instanceof PHP_Token_PUBLIC)) {
return \strtolower(
\str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$i]))
);
}
if (isset($tokens[$i]) &&
!($tokens[$i] instanceof PHP_Token_STATIC ||
$tokens[$i] instanceof PHP_Token_FINAL ||
$tokens[$i] instanceof PHP_Token_ABSTRACT)) {
// no keywords; stop visibility search
break;
}
}
}
/**
* @return string
*/
public function getKeywords()
{
$keywords = [];
$tokens = $this->tokenStream->tokens();
for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) {
if (isset($tokens[$i]) &&
($tokens[$i] instanceof PHP_Token_PRIVATE ||
$tokens[$i] instanceof PHP_Token_PROTECTED ||
$tokens[$i] instanceof PHP_Token_PUBLIC)) {
continue;
}
if (isset($tokens[$i]) &&
($tokens[$i] instanceof PHP_Token_STATIC ||
$tokens[$i] instanceof PHP_Token_FINAL ||
$tokens[$i] instanceof PHP_Token_ABSTRACT)) {
$keywords[] = \strtolower(
\str_replace('PHP_Token_', '', PHP_Token_Util::getClass($tokens[$i]))
);
}
}
return \implode(',', $keywords);
}
}
php-token-stream-4.0.4/src/Trait.php 0000664 0000000 0000000 00000000504 13716532113 0017301 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_TRAIT extends PHP_Token_INTERFACE
{
}
php-token-stream-4.0.4/src/TraitC.php 0000664 0000000 0000000 00000000474 13716532113 0017412 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_TRAIT_C extends PHP_Token
{
}
php-token-stream-4.0.4/src/Try.php 0000664 0000000 0000000 00000000470 13716532113 0016776 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_TRY extends PHP_Token
{
}
php-token-stream-4.0.4/src/Unset.php 0000664 0000000 0000000 00000000472 13716532113 0017320 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_UNSET extends PHP_Token
{
}
php-token-stream-4.0.4/src/UnsetCast.php 0000664 0000000 0000000 00000000477 13716532113 0020140 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_UNSET_CAST extends PHP_Token
{
}
php-token-stream-4.0.4/src/Use.php 0000664 0000000 0000000 00000000470 13716532113 0016754 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_USE extends PHP_Token
{
}
php-token-stream-4.0.4/src/UseFunction.php 0000664 0000000 0000000 00000000501 13716532113 0020455 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_USE_FUNCTION extends PHP_Token
{
}
php-token-stream-4.0.4/src/Util.php 0000664 0000000 0000000 00000000710 13716532113 0017132 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
final class PHP_Token_Util
{
public static function getClass($object): string
{
$parts = \explode('\\', \get_class($object));
return \array_pop($parts);
}
}
php-token-stream-4.0.4/src/Var.php 0000664 0000000 0000000 00000000470 13716532113 0016750 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_VAR extends PHP_Token
{
}
php-token-stream-4.0.4/src/Variable.php 0000664 0000000 0000000 00000000475 13716532113 0017752 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_VARIABLE extends PHP_Token
{
}
php-token-stream-4.0.4/src/While.php 0000664 0000000 0000000 00000000472 13716532113 0017272 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_WHILE extends PHP_Token
{
}
php-token-stream-4.0.4/src/Whitespace.php 0000664 0000000 0000000 00000000477 13716532113 0020323 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_WHITESPACE extends PHP_Token
{
}
php-token-stream-4.0.4/src/XorEqual.php 0000664 0000000 0000000 00000000476 13716532113 0017766 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_XOR_EQUAL extends PHP_Token
{
}
php-token-stream-4.0.4/src/Yield.php 0000664 0000000 0000000 00000000472 13716532113 0017270 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_YIELD extends PHP_Token
{
}
php-token-stream-4.0.4/src/YieldFrom.php 0000664 0000000 0000000 00000000477 13716532113 0020121 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_YIELD_FROM extends PHP_Token
{
}
php-token-stream-4.0.4/src/break.php 0000664 0000000 0000000 00000000472 13716532113 0017306 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class PHP_Token_BREAK extends PHP_Token
{
}
php-token-stream-4.0.4/tests/ 0000775 0000000 0000000 00000000000 13716532113 0016061 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/tests/Token/ 0000775 0000000 0000000 00000000000 13716532113 0017141 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/tests/Token/ClassTest.php 0000664 0000000 0000000 00000015261 13716532113 0021564 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_ClassTest extends TestCase
{
/**
* @var PHP_Token_CLASS
*/
private $class;
/**
* @var PHP_Token_FUNCTION
*/
private $function;
protected function setUp(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'source2.php') as $token) {
if ($token instanceof PHP_Token_CLASS) {
$this->class = $token;
}
if ($token instanceof PHP_Token_FUNCTION) {
$this->function = $token;
break;
}
}
}
public function testGetClassKeywords(): void
{
$this->assertEquals('abstract', $this->class->getKeywords());
}
public function testGetFunctionKeywords(): void
{
$this->assertEquals('abstract,static', $this->function->getKeywords());
}
public function testGetFunctionVisibility(): void
{
$this->assertEquals('public', $this->function->getVisibility());
}
public function testIssue19(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'issue19.php') as $token) {
if ($token instanceof PHP_Token_CLASS) {
$this->assertFalse($token->hasInterfaces());
}
}
}
public function testIssue30(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue30.php');
$this->assertCount(1, $ts->getClasses());
}
public function testAnonymousClassesAreHandledCorrectly(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class.php');
$classes = $ts->getClasses();
$this->assertEquals(
[
'class_with_method_that_declares_anonymous_class',
'AnonymousClass:9#31',
'AnonymousClass:10#55',
'AnonymousClass:11#75',
'AnonymousClass:12#91',
'AnonymousClass:13#107',
],
\array_keys($classes)
);
}
/**
* @ticket https://github.com/sebastianbergmann/php-token-stream/issues/52
*/
public function testAnonymousClassesAreHandledCorrectly2(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class2.php');
$classes = $ts->getClasses();
$this->assertEquals(['Test', 'AnonymousClass:4#23'], \array_keys($classes));
$this->assertEquals(['methodOne', 'methodTwo'], \array_keys($classes['Test']['methods']));
$this->assertEmpty($ts->getFunctions());
}
public function testImportedFunctionsAreHandledCorrectly(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'classUsesNamespacedFunction.php');
$this->assertEmpty($ts->getFunctions());
$this->assertCount(1, $ts->getClasses());
}
/**
* @ticket https://github.com/sebastianbergmann/php-code-coverage/issues/543
*/
public function testClassWithMultipleAnonymousClassesAndFunctionsIsHandledCorrectly(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_multiple_anonymous_classes_and_functions.php');
$classes = $ts->getClasses();
$this->assertArrayHasKey('class_with_multiple_anonymous_classes_and_functions', $classes);
$this->assertArrayHasKey('AnonymousClass:6#23', $classes);
$this->assertArrayHasKey('AnonymousClass:12#53', $classes);
$this->assertArrayHasKey('m', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']);
$this->assertArrayHasKey('anonymousFunction:18#81', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']);
$this->assertArrayHasKey('anonymousFunction:22#108', $classes['class_with_multiple_anonymous_classes_and_functions']['methods']);
}
/**
* @ticket https://github.com/sebastianbergmann/php-token-stream/issues/68
*/
public function testClassWithMethodNamedEmptyIsHandledCorrectly(): void
{
$classes = (new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_named_empty.php'))->getClasses();
$this->assertArrayHasKey('class_with_method_named_empty', $classes);
$this->assertArrayHasKey('empty', $classes['class_with_method_named_empty']['methods']);
}
/**
* @ticket https://github.com/sebastianbergmann/php-code-coverage/issues/424
*/
public function testAnonymousFunctionDoesNotAffectStartAndEndLineOfMethod(): void
{
$classes = (new PHP_Token_Stream(TEST_FILES_PATH . 'php-code-coverage-issue-424.php'))->getClasses();
$this->assertSame(5, $classes['Example']['methods']['even']['startLine']);
$this->assertSame(12, $classes['Example']['methods']['even']['endLine']);
$this->assertSame(7, $classes['Example']['methods']['anonymousFunction:7#28']['startLine']);
$this->assertSame(9, $classes['Example']['methods']['anonymousFunction:7#28']['endLine']);
}
/**
* @ticket https://github.com/sebastianbergmann/php-token-stream/issues/93
*/
public function testClassWithAnonymousClassIsHandledCorrectly(): void
{
$tokens = new PHP_Token_Stream(TEST_FILES_PATH . 'issue93.php');
$this->assertCount(0, $tokens->getInterfaces());
$this->assertCount(0, $tokens->getTraits());
$this->assertCount(0, $tokens->getFunctions());
$classes = $tokens->getClasses();
$this->assertCount(1, $classes);
$this->assertArrayHasKey('PhpAnonym', $classes);
$this->assertSame(2, $classes['PhpAnonym']['startLine']);
$this->assertSame(34, $classes['PhpAnonym']['endLine']);
$this->assertCount(3, $classes['PhpAnonym']['methods']);
$this->assertArrayHasKey('__construct', $classes['PhpAnonym']['methods']);
$this->assertSame(6, $classes['PhpAnonym']['methods']['__construct']['startLine']);
$this->assertSame(9, $classes['PhpAnonym']['methods']['__construct']['endLine']);
$this->assertArrayHasKey('funcOne', $classes['PhpAnonym']['methods']);
$this->assertSame(11, $classes['PhpAnonym']['methods']['funcOne']['startLine']);
$this->assertSame(14, $classes['PhpAnonym']['methods']['funcOne']['endLine']);
$this->assertArrayHasKey('funcTwo', $classes['PhpAnonym']['methods']);
$this->assertSame(16, $classes['PhpAnonym']['methods']['funcTwo']['startLine']);
$this->assertSame(33, $classes['PhpAnonym']['methods']['funcTwo']['endLine']);
}
}
php-token-stream-4.0.4/tests/Token/ClosureTest.php 0000664 0000000 0000000 00000004720 13716532113 0022131 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_ClosureTest extends TestCase
{
/**
* @var PHP_Token_FUNCTION[]
*/
private $functions;
protected function setUp(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'closure.php') as $token) {
if ($token instanceof PHP_Token_FUNCTION) {
$this->functions[] = $token;
}
}
}
public function testGetArguments(): void
{
$this->assertEquals(['$foo' => null, '$bar' => null], $this->functions[0]->getArguments());
$this->assertEquals(['$foo' => 'Foo', '$bar' => null], $this->functions[1]->getArguments());
$this->assertEquals(['$foo' => null, '$bar' => null, '$baz' => null], $this->functions[2]->getArguments());
$this->assertEquals(['$foo' => 'Foo', '$bar' => null, '$baz' => null], $this->functions[3]->getArguments());
$this->assertEquals([], $this->functions[4]->getArguments());
$this->assertEquals([], $this->functions[5]->getArguments());
}
public function testGetName(): void
{
$this->assertEquals('anonymousFunction:2#5', $this->functions[0]->getName());
$this->assertEquals('anonymousFunction:3#27', $this->functions[1]->getName());
$this->assertEquals('anonymousFunction:4#51', $this->functions[2]->getName());
$this->assertEquals('anonymousFunction:5#71', $this->functions[3]->getName());
$this->assertEquals('anonymousFunction:6#93', $this->functions[4]->getName());
$this->assertEquals('anonymousFunction:7#106', $this->functions[5]->getName());
}
public function testGetLine(): void
{
$this->assertEquals(2, $this->functions[0]->getLine());
$this->assertEquals(3, $this->functions[1]->getLine());
$this->assertEquals(4, $this->functions[2]->getLine());
$this->assertEquals(5, $this->functions[3]->getLine());
}
public function testGetEndLine(): void
{
$this->assertEquals(2, $this->functions[0]->getLine());
$this->assertEquals(3, $this->functions[1]->getLine());
$this->assertEquals(4, $this->functions[2]->getLine());
$this->assertEquals(5, $this->functions[3]->getLine());
}
}
php-token-stream-4.0.4/tests/Token/CommentTest.php 0000664 0000000 0000000 00000006004 13716532113 0022114 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
final class PHP_Token_CommentTest extends TestCase
{
/**
* @see https://github.com/sebastianbergmann/php-token-stream/issues/95
*/
public function testIssue95(): void
{
$tokens = new PHP_Token_Stream(TEST_FILES_PATH . 'issue_95.php');
$this->assertCount(33, $tokens);
$this->assertSame(9, $tokens->getLinesOfCode()['loc']);
$this->assertSame(4, $tokens->getLinesOfCode()['cloc']);
$this->assertSame(5, $tokens->getLinesOfCode()['ncloc']);
foreach ($tokens as $token) {
switch ($token->getId()) {
case 17:
$this->assertSame(3, $token->getLine());
$this->assertInstanceOf(PHP_Token_COMMENT::class, $token);
$this->assertSame("// @codeCoverageIgnoreStart\n", (string) $token);
break;
case 18:
$this->assertSame(4, $token->getLine());
$this->assertInstanceOf(PHP_Token_WHITESPACE::class, $token);
$this->assertSame(' ', (string) $token);
break;
case 19:
$this->assertSame(4, $token->getLine());
$this->assertInstanceOf(PHP_Token_COMMENT::class, $token);
$this->assertSame("# ...\n", (string) $token);
break;
case 20:
$this->assertSame(5, $token->getLine());
$this->assertInstanceOf(PHP_Token_WHITESPACE::class, $token);
$this->assertSame(' ', (string) $token);
break;
case 21:
$this->assertSame(5, $token->getLine());
$this->assertInstanceOf(PHP_Token_COMMENT::class, $token);
$this->assertSame("// @codeCoverageIgnoreEnd\n", (string) $token);
break;
case 22:
$this->assertSame(6, $token->getLine());
$this->assertInstanceOf(PHP_Token_CLOSE_CURLY::class, $token);
$this->assertSame('}', (string) $token);
break;
case 24:
$this->assertSame(8, $token->getLine());
$this->assertInstanceOf(PHP_Token_COMMENT::class, $token);
$this->assertSame('/* a one-line comment */', (string) $token);
break;
case 31:
$this->assertSame(9, $token->getLine());
$this->assertInstanceOf(PHP_Token_COMMENT::class, $token);
$this->assertSame('/* a one-line comment */', (string) $token);
break;
}
}
}
}
php-token-stream-4.0.4/tests/Token/FunctionTest.php 0000664 0000000 0000000 00000007714 13716532113 0022310 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_FunctionTest extends TestCase
{
/**
* @var PHP_Token_FUNCTION[]
*/
private $functions;
protected function setUp(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'source.php') as $token) {
if ($token instanceof PHP_Token_FUNCTION) {
$this->functions[] = $token;
}
}
}
public function testGetArguments(): void
{
$this->assertEquals([], $this->functions[0]->getArguments());
$this->assertEquals(
['$baz' => 'Baz'],
$this->functions[1]->getArguments()
);
$this->assertEquals(
['$foobar' => 'Foobar'],
$this->functions[2]->getArguments()
);
$this->assertEquals(
['$barfoo' => 'Barfoo'],
$this->functions[3]->getArguments()
);
$this->assertEquals([], $this->functions[4]->getArguments());
$this->assertEquals(['$x' => null, '$y' => null], $this->functions[5]->getArguments());
}
public function testGetName(): void
{
$this->assertEquals('foo', $this->functions[0]->getName());
$this->assertEquals('bar', $this->functions[1]->getName());
$this->assertEquals('foobar', $this->functions[2]->getName());
$this->assertEquals('barfoo', $this->functions[3]->getName());
$this->assertEquals('baz', $this->functions[4]->getName());
}
public function testGetLine(): void
{
$this->assertEquals(5, $this->functions[0]->getLine());
$this->assertEquals(10, $this->functions[1]->getLine());
$this->assertEquals(17, $this->functions[2]->getLine());
$this->assertEquals(21, $this->functions[3]->getLine());
$this->assertEquals(29, $this->functions[4]->getLine());
$this->assertEquals(37, $this->functions[6]->getLine());
}
public function testGetEndLine(): void
{
$this->assertEquals(5, $this->functions[0]->getEndLine());
$this->assertEquals(12, $this->functions[1]->getEndLine());
$this->assertEquals(19, $this->functions[2]->getEndLine());
$this->assertEquals(23, $this->functions[3]->getEndLine());
$this->assertEquals(31, $this->functions[4]->getEndLine());
$this->assertEquals(41, $this->functions[6]->getEndLine());
}
public function testGetDocblock(): void
{
$this->assertNull($this->functions[0]->getDocblock());
$this->assertEquals(
"/**\n * @param Baz \$baz\n */",
$this->functions[1]->getDocblock()
);
$this->assertEquals(
"/**\n * @param Foobar \$foobar\n */",
$this->functions[2]->getDocblock()
);
$this->assertNull($this->functions[3]->getDocblock());
$this->assertNull($this->functions[4]->getDocblock());
}
public function testSignature(): void
{
$tokens = new PHP_Token_Stream(TEST_FILES_PATH . 'source5.php');
$functions = $tokens->getFunctions();
$classes = $tokens->getClasses();
$interfaces = $tokens->getInterfaces();
$this->assertEquals(
'foo($a, array $b, array $c = array())',
$functions['foo']['signature']
);
$this->assertEquals(
'm($a, array $b, array $c = array())',
$classes['c']['methods']['m']['signature']
);
$this->assertEquals(
'm($a, array $b, array $c = array())',
$classes['a']['methods']['m']['signature']
);
$this->assertEquals(
'm($a, array $b, array $c = array())',
$interfaces['i']['methods']['m']['signature']
);
}
}
php-token-stream-4.0.4/tests/Token/IncludeTest.php 0000664 0000000 0000000 00000002420 13716532113 0022073 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_IncludeTest extends TestCase
{
/**
* @var PHP_Token_Stream
*/
private $ts;
protected function setUp(): void
{
$this->ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source3.php');
}
public function testGetIncludes(): void
{
$this->assertSame(
['test4.php', 'test3.php', 'test2.php', 'test1.php'],
$this->ts->getIncludes()
);
}
public function testGetIncludesCategorized(): void
{
$this->assertSame(
[
'require_once' => ['test4.php'],
'require' => ['test3.php'],
'include_once' => ['test2.php'],
'include' => ['test1.php'],
],
$this->ts->getIncludes(true)
);
}
public function testGetIncludesCategory(): void
{
$this->assertSame(
['test4.php'],
$this->ts->getIncludes(true, 'require_once')
);
}
}
php-token-stream-4.0.4/tests/Token/InterfaceTest.php 0000664 0000000 0000000 00000011525 13716532113 0022416 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_InterfaceTest extends TestCase
{
/**
* @var PHP_Token_CLASS
*/
private $class;
/**
* @var PHP_Token_INTERFACE[]
*/
private $interfaces;
protected function setUp(): void
{
$ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source4.php');
$i = 0;
foreach ($ts as $token) {
if ($token instanceof PHP_Token_CLASS) {
$this->class = $token;
} elseif ($token instanceof PHP_Token_INTERFACE) {
$this->interfaces[$i] = $token;
$i++;
}
}
}
public function testGetName(): void
{
$this->assertEquals(
'iTemplate',
$this->interfaces[0]->getName()
);
}
public function testGetParentNotExists(): void
{
$this->assertFalse(
$this->interfaces[0]->getParent()
);
}
public function testHasParentNotExists(): void
{
$this->assertFalse(
$this->interfaces[0]->hasParent()
);
}
public function testGetParentExists(): void
{
$this->assertEquals(
'a',
$this->interfaces[2]->getParent()
);
}
public function testHasParentExists(): void
{
$this->assertTrue(
$this->interfaces[2]->hasParent()
);
}
public function testGetInterfacesExists(): void
{
$this->assertEquals(
['b'],
$this->class->getInterfaces()
);
}
public function testHasInterfacesExists(): void
{
$this->assertTrue(
$this->class->hasInterfaces()
);
}
public function testGetPackageNamespace(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php') as $token) {
if ($token instanceof PHP_Token_INTERFACE) {
$package = $token->getPackage();
$this->assertSame('Foo\\Bar', $package['namespace']);
}
}
}
public function provideFilesWithClassesWithinMultipleNamespaces()
{
return [
[TEST_FILES_PATH . 'multipleNamespacesWithOneClassUsingBraces.php'],
[TEST_FILES_PATH . 'multipleNamespacesWithOneClassUsingNonBraceSyntax.php'],
];
}
/**
* @dataProvider provideFilesWithClassesWithinMultipleNamespaces
*/
public function testGetPackageNamespaceForFileWithMultipleNamespaces($filepath): void
{
$tokenStream = new PHP_Token_Stream($filepath);
$firstClassFound = false;
foreach ($tokenStream as $token) {
if ($firstClassFound === false && $token instanceof PHP_Token_INTERFACE) {
$package = $token->getPackage();
$this->assertSame('TestClassInBar', $token->getName());
$this->assertSame('Foo\\Bar', $package['namespace']);
$firstClassFound = true;
continue;
}
// Secound class
if ($token instanceof PHP_Token_INTERFACE) {
$package = $token->getPackage();
$this->assertSame('TestClassInBaz', $token->getName());
$this->assertSame('Foo\\Baz', $package['namespace']);
return;
}
}
$this->fail('Searching for 2 classes failed');
}
public function testGetPackageNamespaceIsEmptyForInterfacesThatAreNotWithinNamespaces(): void
{
foreach ($this->interfaces as $token) {
$package = $token->getPackage();
$this->assertSame('', $package['namespace']);
}
}
public function testGetPackageNamespaceWhenExtentingFromNamespaceClass(): void
{
$tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classExtendsNamespacedClass.php');
$firstClassFound = false;
foreach ($tokenStream as $token) {
if ($firstClassFound === false && $token instanceof PHP_Token_INTERFACE) {
$package = $token->getPackage();
$this->assertSame('Baz', $token->getName());
$this->assertSame('Foo\\Bar', $package['namespace']);
$firstClassFound = true;
continue;
}
if ($token instanceof PHP_Token_INTERFACE) {
$package = $token->getPackage();
$this->assertSame('Extender', $token->getName());
$this->assertSame('Other\\Space', $package['namespace']);
return;
}
}
$this->fail('Searching for 2 classes failed');
}
}
php-token-stream-4.0.4/tests/Token/NamespaceTest.php 0000664 0000000 0000000 00000003644 13716532113 0022415 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PHPUnit\Framework\TestCase;
class PHP_Token_NamespaceTest extends TestCase
{
public function testGetName(): void
{
$tokenStream = new PHP_Token_Stream(
TEST_FILES_PATH . 'classInNamespace.php'
);
foreach ($tokenStream as $token) {
if ($token instanceof PHP_Token_NAMESPACE) {
$this->assertSame('Foo\\Bar', $token->getName());
}
}
}
public function testGetStartLineWithUnscopedNamespace(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php') as $token) {
if ($token instanceof PHP_Token_NAMESPACE) {
$this->assertSame(2, $token->getLine());
}
}
}
public function testGetEndLineWithUnscopedNamespace(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php') as $token) {
if ($token instanceof PHP_Token_NAMESPACE) {
$this->assertSame(2, $token->getEndLine());
}
}
}
public function testGetStartLineWithScopedNamespace(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'classInScopedNamespace.php') as $token) {
if ($token instanceof PHP_Token_NAMESPACE) {
$this->assertSame(2, $token->getLine());
}
}
}
public function testGetEndLineWithScopedNamespace(): void
{
foreach (new PHP_Token_Stream(TEST_FILES_PATH . 'classInScopedNamespace.php') as $token) {
if ($token instanceof PHP_Token_NAMESPACE) {
$this->assertSame(8, $token->getEndLine());
}
}
}
}
php-token-stream-4.0.4/tests/_fixture/ 0000775 0000000 0000000 00000000000 13716532113 0017706 5 ustar 00root root 0000000 0000000 php-token-stream-4.0.4/tests/_fixture/classExtendsNamespacedClass.php 0000664 0000000 0000000 00000000151 13716532113 0026023 0 ustar 00root root 0000000 0000000 method_in_anonymous_class();
}
public function methodTwo() {
return false;
}
}
php-token-stream-4.0.4/tests/_fixture/class_with_multiple_anonymous_classes_and_functions.php 0000664 0000000 0000000 00000000735 13716532113 0033236 0 ustar 00root root 0000000 0000000 field = $field;
}
public function funcOne(): int
{
return $this->field;
}
public function funcTwo(): int
{
$cls = new class(42) {
private $num;
public function __construct(int $num)
{
$this->num = $num;
}
public function getNum(): int
{
return $this->num;
}
};
return $cls->getNum();
}
}
php-token-stream-4.0.4/tests/_fixture/issue_95.php 0000664 0000000 0000000 00000000264 13716532113 0022066 0 ustar 00root root 0000000 0000000
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
require __DIR__ . '/../vendor/autoload.php';
\define(
'TEST_FILES_PATH',
__DIR__ . \DIRECTORY_SEPARATOR . '_fixture' . \DIRECTORY_SEPARATOR
);