Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update master #10537

Closed
wants to merge 108 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
d91aab1
Restore support for null coalesce on match expressions
tscni Nov 29, 2023
4f25cce
update define types to be correct
kkmuffme Nov 29, 2023
2c5645c
use branch name to randomize tests to ensure test dependencies will e…
kkmuffme Nov 29, 2023
47d0df1
Merge pull request #10423 from kkmuffme/update-define-constant-types
orklah Nov 29, 2023
f9f8bac
Merge pull request #10424 from kkmuffme/use-pr-branch-name-for-random…
orklah Nov 29, 2023
4f458b4
Fix static magic method pureness not being inherited from traits
tscni Nov 29, 2023
eabb57f
Use correct file path while adding unused suppressions for virtual __…
danog Dec 1, 2023
8111319
Fix
danog Dec 1, 2023
461cd18
cs-fix
danog Dec 1, 2023
7e94841
Fix array_key_exists negation
danog Dec 1, 2023
edf2d1e
Fix
danog Dec 1, 2023
cab7cf0
Fix
danog Dec 1, 2023
ef16989
cs-fix
danog Dec 1, 2023
2e249ab
Create keyed arrays when assigning literal union keys
danog Dec 1, 2023
ab3a17b
Fix
danog Dec 1, 2023
1a46565
Cleanup
danog Dec 1, 2023
f652cf0
Merge branch 'fix_array_key_exists_negation' into fix_literal_union_key
danog Dec 1, 2023
ead2908
Fixup tests
danog Dec 1, 2023
1471293
Add failing test
danog Dec 1, 2023
17bf9a4
Fixup
danog Dec 1, 2023
9119ce0
Fixup
danog Dec 1, 2023
0aeb87c
Simplify
danog Dec 1, 2023
59fd539
Fix POSIX only detection of absolute paths
rarila Dec 1, 2023
c6bf949
Fix CLI -r error
kkmuffme Dec 2, 2023
6eba2f5
Fix return type of DOMXPath::query
nielsdos Dec 2, 2023
f7df43a
Merge pull request #10443 from nielsdos/5.x
orklah Dec 2, 2023
8a180e6
Merge pull request #10442 from kkmuffme/add-missing-r-to-args
orklah Dec 2, 2023
fe34213
Merge pull request #10434 from nicelocal/fix_virtual
orklah Dec 2, 2023
794bdaa
Merge pull request #10422 from tscni/fix/match-null-coalesce
orklah Dec 2, 2023
0659967
Merge pull request #10429 from tscni/fix/trait-call-static
orklah Dec 2, 2023
bcb73f2
Merge pull request #10441 from rarila/patch-1
orklah Dec 2, 2023
b03b846
Emit UnusedPsalmSuppress issues for suppressed issues already removed…
danog Nov 30, 2023
ee5e4b8
Update
danog Dec 3, 2023
de53638
Fixes
danog Dec 3, 2023
18a6c0b
Implement by-ref closure use analysis
danog Dec 3, 2023
eb54624
Fixup
danog Dec 3, 2023
a2d89d0
Fixup
danog Dec 3, 2023
62f32f4
Merge pull request #10431 from nicelocal/fix_unused_psalm_suppress
orklah Dec 3, 2023
75633cb
Merge remote-tracking branch 'hub/5.x' into byref_closure_use
danog Dec 3, 2023
37cf82e
Merge branch '5.x' into fix_literal_union_key
danog Dec 3, 2023
1cca558
Merge pull request #10419 from nicelocal/byref_closure_use
orklah Dec 3, 2023
390df68
Merge branch '5.x' into fix_literal_union_key
danog Dec 3, 2023
c620f6e
Merge pull request #10439 from nicelocal/fix_literal_union_key
orklah Dec 3, 2023
4ed0fe9
Fix shaped array class string key combination
danog Dec 6, 2023
527b04d
Fix
danog Dec 6, 2023
d3b7f3f
Fix
danog Dec 6, 2023
76458e0
Add test
danog Dec 6, 2023
b5ee6e0
Replace remaining POSIX only absolute path detection
theodorejb Dec 6, 2023
dbded43
Small assertion fix
danog Dec 7, 2023
bfd1675
the new version has no changes
kkmuffme Dec 7, 2023
6650bd8
cs-fix
danog Dec 7, 2023
d5bac4d
Emit AfterCodebasePopulatedEvent even on partial scans
danog Dec 7, 2023
0d3485b
Commit just first part of fix for now
danog Dec 7, 2023
951fa22
fix composer scripts running with inconsistent php versions
kkmuffme Dec 7, 2023
576ecd6
Fix #10460
danog Dec 7, 2023
bc71da4
Merge pull request #10464 from danog/fix_10460
orklah Dec 7, 2023
ea06da7
Merge pull request #10457 from nicelocal/always_emit_AfterCodebasePop…
orklah Dec 7, 2023
0c6d9d3
Merge pull request #10455 from nicelocal/small_assertion_fix
orklah Dec 7, 2023
f4e9837
Merge pull request #10450 from nicelocal/fix_class_string_key
orklah Dec 7, 2023
b87427f
Merge pull request #10463 from kkmuffme/fix-scripts-running-with-inco…
orklah Dec 7, 2023
93c7a8f
Merge pull request #10452 from theodorejb/patch-1
orklah Dec 7, 2023
5fccb33
dont combine empty string with numeric-string
kkmuffme Dec 7, 2023
5e221f3
Merge pull request #10459 from kkmuffme/dont-combine-empty-string-wit…
orklah Dec 9, 2023
f268dfa
Merge pull request #10456 from kkmuffme/update-cpu-counter-dependency
orklah Dec 10, 2023
20ae081
fix psalm v4 hardcoded in tests
kkmuffme Dec 12, 2023
0fd789c
Fix type not equal when parent
kkmuffme Dec 12, 2023
679a492
other atomics
kkmuffme Dec 12, 2023
3c045b3
fix false positive ArgumentTypeCoercion for callback param when unsea…
kkmuffme Dec 7, 2023
761f390
Use same parameter names in stubs
danog Dec 12, 2023
9a57645
Merge pull request #10475 from kkmuffme/fix-old-psalm-version-in-tests
orklah Dec 12, 2023
cdb9c54
Merge pull request #10477 from kkmuffme/unused-variable-taint-should-…
orklah Dec 12, 2023
a5e1579
Merge pull request #10480 from danog/fix_10479
orklah Dec 12, 2023
1df5b35
Merge pull request #10454 from kkmuffme/unsealed-not-nonempty-callabl…
orklah Dec 12, 2023
82ff582
add error for invalid array key type in docblock
kkmuffme Dec 12, 2023
9be7fce
Fix literal string keys int not handled as int as PHP does
kkmuffme Dec 12, 2023
955e7fe
Merge pull request #10481 from kkmuffme/invalid-array-key-types-and-l…
orklah Dec 13, 2023
e981778
Fix "Cannot locate enable" with Symfony project
florisluiten Dec 13, 2023
108f626
fix literal int/string comparisons only using one literal
kkmuffme Dec 13, 2023
e6f24d9
Fix https://psalm.dev/r/aada187f50 where 2 union types are not inters…
kkmuffme Dec 13, 2023
6363b57
fix bug equality assertion with int and float setting wrong type - re…
kkmuffme Dec 13, 2023
af39782
remove previously broken test https://github.com/vimeo/psalm/issues/1…
kkmuffme Dec 13, 2023
cceb1fb
add missing phpdoc in new tests
kkmuffme Dec 13, 2023
d04694f
Fix https://github.com/vimeo/psalm/issues/9267
kkmuffme Dec 13, 2023
f7fe4cf
Merge pull request #10484 from kkmuffme/literal-string-equality-remov…
orklah Dec 13, 2023
3bc8cde
Merge pull request #10488 from kkmuffme/invalidargument-false-not-tru…
orklah Dec 13, 2023
2ce3407
Fix Uncaught RuntimeException: PHP Error: Uninitialized string offset…
Dec 14, 2023
c8748dc
Add trim() in global use
Dec 14, 2023
64dc2ff
Merge pull request #10489 from iMu3ic/fix_pattern_length_check
orklah Dec 14, 2023
d6cf9fa
Add support for Override attribute
delolmo Dec 15, 2023
b113f3e
Merge pull request #10493 from delolmo/override-attribute
orklah Dec 16, 2023
06f6dae
strtok always returns a non-empty-string when it does not return false
kkmuffme Dec 17, 2023
b38530e
Merge pull request #10497 from kkmuffme/strtok-improved-return-type
orklah Dec 17, 2023
dee555d
filter_input & filter_var return type more specific
kkmuffme Sep 18, 2023
f8a53eb
Fix callable without args not handled correctly
kkmuffme Dec 18, 2023
80dc208
fix other places that have a similar bug
kkmuffme Dec 18, 2023
1ff8518
Fix https://github.com/vimeo/psalm/issues/9840
kkmuffme Dec 19, 2023
9e463bb
make tests work in PHP < 8.2
kkmuffme Dec 19, 2023
5731f92
fix: #10496 #10503
ging-dev Dec 20, 2023
891036e
Fixed SessionUpdateTimestampHandlerInterface parameter names
Jan 2, 2024
afc2df4
Merge pull request #10524 from zerkms/10512_SessionUpdateTimestampHan…
orklah Jan 2, 2024
1a3bba3
Reduce memory consumption of caching and parallel processing without …
sj-i Jan 8, 2024
8e577c8
Merge pull request #10532 from sj-i/improve-memory-usage
orklah Jan 8, 2024
e6a48e1
Merge pull request #10483 from florisluiten/5.x
orklah Jan 9, 2024
abfbded
Merge pull request #10498 from kkmuffme/filter-input-more-detailed
orklah Jan 9, 2024
6c98f25
Merge pull request #10500 from kkmuffme/callable-without-args-union-n…
orklah Jan 9, 2024
b4ad9c0
Merge pull request #10505 from kkmuffme/fix-readonly-properties-by-re…
orklah Jan 9, 2024
06b71be
Merge pull request #10508 from ging-dev/bugfixes
orklah Jan 9, 2024
95dd249
Merge branch '5.x' into upstream-master
weirdan Jan 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ jobs:
CHUNK_COUNT: "${{ matrix.count }}"
CHUNK_NUMBER: "${{ matrix.chunk }}"
PARALLEL_PROCESSES: 5
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}

steps:
- name: Set up PHP
Expand Down
9 changes: 6 additions & 3 deletions bin/tests-github-actions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
set -eu

function get_seeded_random() {
openssl enc -aes-256-ctr -pass pass:"vimeo/psalm" -nosalt </dev/zero 2>/dev/null
local -r branch_name="$1"
openssl enc -aes-256-ctr -pass pass:"$branch_name" -nosalt </dev/zero 2>/dev/null
}

function run {
local -r chunk_count="$1"
local -r chunk_number="$2"
local -r parallel_processes="$3"
local -r branch_name="$4"

local -r phpunit_cmd='
echo "::group::{}";
Expand All @@ -23,7 +25,7 @@ exit "$exit_code"'

mkdir -p build/parallel/ build/phpunit/logs/

find tests -name '*Test.php' | shuf --random-source=<(get_seeded_random) > build/tests_all
find tests -name '*Test.php' | shuf --random-source=<(get_seeded_random "$branch_name") > build/tests_all
# split incorrectly splits the lines by byte size, which means that the number of tests per file are as evenly distributed as possible
#split --number="l/$chunk_number/$chunk_count" build/tests_all > build/tests_split
local -r lines=$(wc -l <build/tests_all)
Expand All @@ -47,5 +49,6 @@ exit "$exit_code"'
if [ -z "${CHUNK_COUNT:-}" ]; then echo "Did not find env var CHUNK_COUNT."; exit 1; fi
if [ -z "${CHUNK_NUMBER:-}" ]; then echo "Did not find env var CHUNK_NUMBER."; exit 1; fi
if [ -z "${PARALLEL_PROCESSES:-}" ]; then echo "Did not find env var PARALLEL_PROCESSES."; exit 1; fi
if [ -z "${BRANCH_NAME:-}" ]; then echo "Did not find env var BRANCH_NAME."; exit 1; fi

run "$CHUNK_COUNT" "$CHUNK_NUMBER" "$PARALLEL_PROCESSES"
run "$CHUNK_COUNT" "$CHUNK_NUMBER" "$PARALLEL_PROCESSES" "$BRANCH_NAME"
290 changes: 145 additions & 145 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,150 +1,150 @@
{
"name": "vimeo/psalm",
"type": "project",
"description": "A static analysis tool for finding errors in PHP applications",
"keywords": [
"php",
"code",
"inspection",
"static analysis"
],
"license": "MIT",
"authors": [
{
"name": "Matthew Brown"
}
],
"require": {
"php": "~8.1.17 || ~8.2.4 || ~8.3.0",
"ext-SimpleXML": "*",
"ext-ctype": "*",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"composer-runtime-api": "^2",
"amphp/amp": "^3",
"amphp/byte-stream": "^2",
"composer/semver": "^1.4 || ^2.0 || ^3.0",
"composer/xdebug-handler": "^2.0 || ^3.0",
"dnoegel/php-xdg-base-dir": "^0.1.1",
"felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.2",
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"nikic/php-parser": "^4.16",
"sebastian/diff": "^4.0 || ^5.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
"symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
"nikic/php-parser": "4.17.0"
},
"provide": {
"psalm/psalm": "self.version"
},
"require-dev": {
"ext-curl": "*",
"amphp/phpunit-util": "^3",
"bamarni/composer-bin-plugin": "^1.4",
"brianium/paratest": "^6.9",
"dg/bypass-finals": "^1.5",
"mockery/mockery": "^1.5",
"nunomaduro/mock-final-classes": "^1.1",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/phpdoc-parser": "^1.6",
"phpunit/phpunit": "^9.6",
"psalm/plugin-mockery": "^1.1",
"psalm/plugin-phpunit": "^0.18",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
"symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"suggest": {
"ext-igbinary": "^2.0.5 is required, used to serialize caching data",
"ext-curl": "In order to send data to shepherd"
},
"config": {
"allow-plugins": {
"bamarni/composer-bin-plugin": true,
"composer/package-versions-deprecated": true,
"dealerdirect/phpcodesniffer-composer-installer": true
},
"optimize-autoloader": true,
"sort-packages": true,
"platform-check": true
},
"extra": {
"branch-alias": {
"dev-master": "6.x-dev",
"dev-5.x": "5.x-dev",
"dev-4.x": "4.x-dev",
"dev-3.x": "3.x-dev",
"dev-2.x": "2.x-dev",
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psalm\\": "src/Psalm/"
}
},
"autoload-dev": {
"psr-4": {
"Psalm\\Tests\\": "tests/"
}
"name": "vimeo/psalm",
"type": "project",
"description": "A static analysis tool for finding errors in PHP applications",
"keywords": [
"php",
"code",
"inspection",
"static analysis"
],
"license": "MIT",
"authors": [
{
"name": "Matthew Brown"
}
],
"require": {
"php": "~8.1.17 || ~8.2.4 || ~8.3.0",
"ext-SimpleXML": "*",
"ext-ctype": "*",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"composer-runtime-api": "^2",
"amphp/amp": "^3",
"amphp/byte-stream": "^2",
"composer/semver": "^1.4 || ^2.0 || ^3.0",
"composer/xdebug-handler": "^2.0 || ^3.0",
"dnoegel/php-xdg-base-dir": "^0.1.1",
"felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.2",
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"nikic/php-parser": "^4.16",
"sebastian/diff": "^4.0 || ^5.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
"symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
"nikic/php-parser": "4.17.0"
},
"provide": {
"psalm/psalm": "self.version"
},
"require-dev": {
"ext-curl": "*",
"amphp/phpunit-util": "^3",
"bamarni/composer-bin-plugin": "^1.4",
"brianium/paratest": "^6.9",
"dg/bypass-finals": "^1.5",
"mockery/mockery": "^1.5",
"nunomaduro/mock-final-classes": "^1.1",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/phpdoc-parser": "^1.6",
"phpunit/phpunit": "^9.6",
"psalm/plugin-mockery": "^1.1",
"psalm/plugin-phpunit": "^0.18",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
"symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"suggest": {
"ext-igbinary": "^2.0.5 is required, used to serialize caching data",
"ext-curl": "In order to send data to shepherd"
},
"config": {
"allow-plugins": {
"bamarni/composer-bin-plugin": true,
"composer/package-versions-deprecated": true,
"dealerdirect/phpcodesniffer-composer-installer": true
},
"repositories": [
{
"type": "path",
"url": "examples/plugins/composer-based/echo-checker"
}
"optimize-autoloader": true,
"sort-packages": true,
"platform-check": true
},
"extra": {
"branch-alias": {
"dev-master": "6.x-dev",
"dev-5.x": "5.x-dev",
"dev-4.x": "4.x-dev",
"dev-3.x": "3.x-dev",
"dev-2.x": "2.x-dev",
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psalm\\": "src/Psalm/"
}
},
"autoload-dev": {
"psr-4": {
"Psalm\\Tests\\": "tests/"
}
},
"repositories": [
{
"type": "path",
"url": "examples/plugins/composer-based/echo-checker"
}
],
"minimum-stability": "dev",
"prefer-stable": true,
"bin": [
"psalm",
"psalm-language-server",
"psalm-plugin",
"psalm-refactor",
"psalter"
],
"scripts": {
"cs": "@php phpcs -ps",
"cs-fix": "@php phpcbf -ps",
"lint": "@php parallel-lint ./src ./tests",
"phpunit": [
"Composer\\Config::disableProcessTimeout",
"@php paratest -f --runner=WrapperRunner"
],
"minimum-stability": "dev",
"prefer-stable": true,
"bin": [
"psalm",
"psalm-language-server",
"psalm-plugin",
"psalm-refactor",
"psalter"
"phpunit-std": [
"Composer\\Config::disableProcessTimeout",
"@php phpunit"
],
"scripts": {
"cs": "phpcs -ps",
"cs-fix": "phpcbf -ps",
"lint": "parallel-lint ./src ./tests",
"phpunit": [
"Composer\\Config::disableProcessTimeout",
"paratest -f --runner=WrapperRunner"
],
"phpunit-std": [
"Composer\\Config::disableProcessTimeout",
"phpunit"
],
"verify-callmap": "@php phpunit tests/Internal/Codebase/InternalCallMapHandlerTest.php",
"psalm": "@php ./psalm",
"psalm-set-baseline": "@php ./psalm --set-baseline=psalm-baseline.xml",
"tests": [
"@lint",
"@cs",
"@psalm",
"@phpunit"
]
},
"scripts-descriptions": {
"cs": "Checks that the code conforms to the coding standard.",
"cs-fix": "Automatically correct coding standard violations.",
"lint": "Lint php files.",
"phpunit": "Runs unit tests in parallel.",
"phpunit-std": "Runs unit tests.",
"psalm": "Runs static analysis.",
"tests": "Runs all available tests."
},
"support": {
"docs": "https://psalm.dev/docs",
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
}
"verify-callmap": "@php phpunit tests/Internal/Codebase/InternalCallMapHandlerTest.php",
"psalm": "@php ./psalm",
"psalm-set-baseline": "@php ./psalm --set-baseline=psalm-baseline.xml",
"tests": [
"@lint",
"@cs",
"@psalm",
"@phpunit"
]
},
"scripts-descriptions": {
"cs": "Checks that the code conforms to the coding standard.",
"cs-fix": "Automatically correct coding standard violations.",
"lint": "Lint php files.",
"phpunit": "Runs unit tests in parallel.",
"phpunit-std": "Runs unit tests.",
"psalm": "Runs static analysis.",
"tests": "Runs all available tests."
},
"support": {
"docs": "https://psalm.dev/docs",
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
}
}
1 change: 1 addition & 0 deletions config.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@
<xs:element name="RedundantCastGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantCondition" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantConditionGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantFlag" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantFunctionCall" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantFunctionCallGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
<xs:element name="RedundantIdentityWithTrue" type="IssueHandlerType" minOccurs="0" />
Expand Down
18 changes: 9 additions & 9 deletions dictionaries/CallMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -1552,7 +1552,7 @@
'decbin' => ['string', 'num'=>'int'],
'dechex' => ['string', 'num'=>'int'],
'decoct' => ['string', 'num'=>'int'],
'define' => ['bool', 'constant_name'=>'string', 'value'=>'mixed', 'case_insensitive='=>'bool'],
'define' => ['bool', 'constant_name'=>'string', 'value'=>'array|scalar|null', 'case_insensitive='=>'false'],
'define_syslog_variables' => ['void'],
'defined' => ['bool', 'constant_name'=>'string'],
'deflate_add' => ['string|false', 'context'=>'DeflateContext', 'data'=>'string', 'flush_mode='=>'int'],
Expand Down Expand Up @@ -2847,11 +2847,11 @@
'FilesystemIterator::setInfoClass' => ['void', 'class='=>'class-string'],
'FilesystemIterator::valid' => ['bool'],
'filetype' => ['string|false', 'filename'=>'string'],
'filter_has_var' => ['bool', 'input_type'=>'int', 'var_name'=>'string'],
'filter_has_var' => ['bool', 'input_type'=>'0|1|2|4|5', 'var_name'=>'string'],
'filter_id' => ['int|false', 'name'=>'string'],
'filter_input' => ['mixed|false', 'type'=>'int', 'var_name'=>'string', 'filter='=>'int', 'options='=>'array|int'],
'filter_input_array' => ['array|false|null', 'type'=>'int', 'options='=>'int|array', 'add_empty='=>'bool'],
'filter_list' => ['array'],
'filter_input' => ['mixed|false|null', 'type'=>'0|1|2|4|5', 'var_name'=>'string', 'filter='=>'int', 'options='=>'array|int'],
'filter_input_array' => ['array|false|null', 'type'=>'0|1|2|4|5', 'options='=>'int|array', 'add_empty='=>'bool'],
'filter_list' => ['non-empty-list<non-falsy-string>'],
'filter_var' => ['mixed|false', 'value'=>'mixed', 'filter='=>'int', 'options='=>'array|int'],
'filter_var_array' => ['array|false|null', 'array'=>'array', 'options='=>'array|int', 'add_empty='=>'bool'],
'FilterIterator::__construct' => ['void', 'iterator'=>'Iterator'],
Expand Down Expand Up @@ -11141,8 +11141,8 @@
'SessionIdInterface::create_sid' => ['string'],
'SessionUpdateTimestampHandler::updateTimestamp' => ['bool', 'id'=>'string', 'data'=>'string'],
'SessionUpdateTimestampHandler::validateId' => ['char', 'id'=>'string'],
'SessionUpdateTimestampHandlerInterface::updateTimestamp' => ['bool', 'key'=>'string', 'value'=>'string'],
'SessionUpdateTimestampHandlerInterface::validateId' => ['bool', 'key'=>'string'],
'SessionUpdateTimestampHandlerInterface::updateTimestamp' => ['bool', 'id'=>'string', 'data'=>'string'],
'SessionUpdateTimestampHandlerInterface::validateId' => ['bool', 'id'=>'string'],
'set_error_handler' => ['null|callable(int,string,string=,int=,array=):bool', 'callback'=>'null|callable(int,string,string=,int=,array=):bool', 'error_levels='=>'int'],
'set_exception_handler' => ['null|callable(Throwable):void', 'callback'=>'null|callable(Throwable):void'],
'set_file_buffer' => ['int', 'stream'=>'resource', 'size'=>'int'],
Expand Down Expand Up @@ -12923,8 +12923,8 @@
'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
'strspn' => ['int', 'string'=>'string', 'characters'=>'string', 'offset='=>'int', 'length='=>'?int'],
'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
'strtok' => ['string|false', 'string'=>'string', 'token'=>'string'],
'strtok\'1' => ['string|false', 'string'=>'string'],
'strtok' => ['non-empty-string|false', 'string'=>'string', 'token'=>'string'],
'strtok\'1' => ['non-empty-string|false', 'string'=>'string'],
'strtolower' => ['lowercase-string', 'string'=>'string'],
'strtotime' => ['int|false', 'datetime'=>'string', 'baseTimestamp='=>'?int'],
'strtoupper' => ['string', 'string'=>'string'],
Expand Down
Loading
Loading