dep: update phan
This commit is contained in:
Generated
+7
-7
@@ -1886,16 +1886,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phan/phan",
|
||||
"version": "5.0.0",
|
||||
"version": "5.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phan/phan.git",
|
||||
"reference": "f36b6b9a2f4143a25f35ce94d712ceb0527e9d90"
|
||||
"reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phan/phan/zipball/f36b6b9a2f4143a25f35ce94d712ceb0527e9d90",
|
||||
"reference": "f36b6b9a2f4143a25f35ce94d712ceb0527e9d90",
|
||||
"url": "https://api.github.com/repos/phan/phan/zipball/d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
|
||||
"reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1912,7 +1912,7 @@
|
||||
"symfony/console": "^3.2|^4.0|^5.0",
|
||||
"symfony/polyfill-mbstring": "^1.11.0",
|
||||
"symfony/polyfill-php80": "^1.20.0",
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2"
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.0"
|
||||
@@ -1959,9 +1959,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phan/phan/issues",
|
||||
"source": "https://github.com/phan/phan/tree/5.0.0"
|
||||
"source": "https://github.com/phan/phan/tree/5.2.1"
|
||||
},
|
||||
"time": "2021-08-01T18:17:28+00:00"
|
||||
"time": "2021-09-15T00:08:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-extended/php-system",
|
||||
|
||||
+5
-5
@@ -29,7 +29,7 @@ private static $installed = array (
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '40a20a55d3aa08f0ab58a50b0572b17dce33de80',
|
||||
'reference' => 'cf3f40b5787b2a1aed9255775143108ef5b1f278',
|
||||
'name' => 'sammo-hid/sammo',
|
||||
),
|
||||
'versions' =>
|
||||
@@ -315,12 +315,12 @@ private static $installed = array (
|
||||
),
|
||||
'phan/phan' =>
|
||||
array (
|
||||
'pretty_version' => '5.0.0',
|
||||
'version' => '5.0.0.0',
|
||||
'pretty_version' => '5.2.1',
|
||||
'version' => '5.2.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'f36b6b9a2f4143a25f35ce94d712ceb0527e9d90',
|
||||
'reference' => 'd724bbb8fc3ba89179868bb5220ecdf6a9c1636b',
|
||||
),
|
||||
'php-extended/php-system' =>
|
||||
array (
|
||||
@@ -450,7 +450,7 @@ private static $installed = array (
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '40a20a55d3aa08f0ab58a50b0572b17dce33de80',
|
||||
'reference' => 'cf3f40b5787b2a1aed9255775143108ef5b1f278',
|
||||
),
|
||||
'scssphp/scssphp' =>
|
||||
array (
|
||||
|
||||
Vendored
+1
-1
@@ -28,7 +28,7 @@ return array(
|
||||
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'6714be961f4a45ae8b9a99d5d55c5d07' => $vendorDir . '/tysonandre/var_representation_polyfill/src/var_representation.php',
|
||||
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
||||
'5b154887902198b16314243c6e0e3e19' => $vendorDir . '/pguardiario/phpuri/phpuri.php',
|
||||
'ef65a1626449d89d0811cf9befce46f0' => $vendorDir . '/illuminate/events/functions.php',
|
||||
'5b154887902198b16314243c6e0e3e19' => $vendorDir . '/pguardiario/phpuri/phpuri.php',
|
||||
'870dc64919afa8b0f700701bb2c6a783' => $baseDir . '/f_config/config.php',
|
||||
);
|
||||
|
||||
Vendored
+1
-1
@@ -29,8 +29,8 @@ class ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a
|
||||
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
|
||||
'6714be961f4a45ae8b9a99d5d55c5d07' => __DIR__ . '/..' . '/tysonandre/var_representation_polyfill/src/var_representation.php',
|
||||
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
|
||||
'5b154887902198b16314243c6e0e3e19' => __DIR__ . '/..' . '/pguardiario/phpuri/phpuri.php',
|
||||
'ef65a1626449d89d0811cf9befce46f0' => __DIR__ . '/..' . '/illuminate/events/functions.php',
|
||||
'5b154887902198b16314243c6e0e3e19' => __DIR__ . '/..' . '/pguardiario/phpuri/phpuri.php',
|
||||
'870dc64919afa8b0f700701bb2c6a783' => __DIR__ . '/../..' . '/f_config/config.php',
|
||||
);
|
||||
|
||||
|
||||
Vendored
+8
-8
@@ -1948,17 +1948,17 @@
|
||||
},
|
||||
{
|
||||
"name": "phan/phan",
|
||||
"version": "5.0.0",
|
||||
"version_normalized": "5.0.0.0",
|
||||
"version": "5.2.1",
|
||||
"version_normalized": "5.2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phan/phan.git",
|
||||
"reference": "f36b6b9a2f4143a25f35ce94d712ceb0527e9d90"
|
||||
"reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phan/phan/zipball/f36b6b9a2f4143a25f35ce94d712ceb0527e9d90",
|
||||
"reference": "f36b6b9a2f4143a25f35ce94d712ceb0527e9d90",
|
||||
"url": "https://api.github.com/repos/phan/phan/zipball/d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
|
||||
"reference": "d724bbb8fc3ba89179868bb5220ecdf6a9c1636b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1975,7 +1975,7 @@
|
||||
"symfony/console": "^3.2|^4.0|^5.0",
|
||||
"symfony/polyfill-mbstring": "^1.11.0",
|
||||
"symfony/polyfill-php80": "^1.20.0",
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2"
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.0"
|
||||
@@ -1988,7 +1988,7 @@
|
||||
"ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.",
|
||||
"ext-var_representation": "Suggested for converting values to strings in issue messages"
|
||||
},
|
||||
"time": "2021-08-01T18:17:28+00:00",
|
||||
"time": "2021-09-15T00:08:40+00:00",
|
||||
"bin": [
|
||||
"phan",
|
||||
"phan_client",
|
||||
@@ -2024,7 +2024,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phan/phan/issues",
|
||||
"source": "https://github.com/phan/phan/tree/5.0.0"
|
||||
"source": "https://github.com/phan/phan/tree/5.2.1"
|
||||
},
|
||||
"install-path": "../phan/phan"
|
||||
},
|
||||
|
||||
Vendored
+5
-5
@@ -6,7 +6,7 @@
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '40a20a55d3aa08f0ab58a50b0572b17dce33de80',
|
||||
'reference' => 'cf3f40b5787b2a1aed9255775143108ef5b1f278',
|
||||
'name' => 'sammo-hid/sammo',
|
||||
),
|
||||
'versions' =>
|
||||
@@ -292,12 +292,12 @@
|
||||
),
|
||||
'phan/phan' =>
|
||||
array (
|
||||
'pretty_version' => '5.0.0',
|
||||
'version' => '5.0.0.0',
|
||||
'pretty_version' => '5.2.1',
|
||||
'version' => '5.2.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'f36b6b9a2f4143a25f35ce94d712ceb0527e9d90',
|
||||
'reference' => 'd724bbb8fc3ba89179868bb5220ecdf6a9c1636b',
|
||||
),
|
||||
'php-extended/php-system' =>
|
||||
array (
|
||||
@@ -427,7 +427,7 @@
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '40a20a55d3aa08f0ab58a50b0572b17dce33de80',
|
||||
'reference' => 'cf3f40b5787b2a1aed9255775143108ef5b1f278',
|
||||
),
|
||||
'scssphp/scssphp' =>
|
||||
array (
|
||||
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
.git/
|
||||
internal/PHP_CodeSniffer
|
||||
tests/docker
|
||||
tests/run_all_tests_dockerized
|
||||
.git
|
||||
vendor
|
||||
.phan/data
|
||||
composer.phar
|
||||
\#*#
|
||||
build
|
||||
report
|
||||
samples
|
||||
all_output.*
|
||||
.vscode/
|
||||
*.joblog
|
||||
*.swo
|
||||
*.swp
|
||||
*.zip
|
||||
tags
|
||||
.phan/config.local.php
|
||||
nohup.out
|
||||
*.md.new
|
||||
.idea/
|
||||
src_copy
|
||||
out/
|
||||
phpspy.*
|
||||
.phpunit.result.cache
|
||||
errors.txt
|
||||
Vendored
+5
@@ -393,12 +393,15 @@ return [
|
||||
'tool/phan_repl_helpers.php',
|
||||
'internal/dump_fallback_ast.php',
|
||||
'internal/dump_html_styles.php',
|
||||
'internal/emit_signature_map_for_php_version.php',
|
||||
'internal/extract_arg_info.php',
|
||||
'internal/flatten_signature_map.php',
|
||||
'internal/internalsignatures.php',
|
||||
'internal/line_deleter.php',
|
||||
'internal/package.php',
|
||||
'internal/reflection_completeness_check.php',
|
||||
'internal/sanitycheck.php',
|
||||
'internal/sort_signature_map.php',
|
||||
'vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php',
|
||||
'vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php',
|
||||
'vendor/phpdocumentor/reflection-docblock/src/DocBlock.php',
|
||||
@@ -651,6 +654,8 @@ return [
|
||||
'RemoveDebugStatementPlugin',
|
||||
'UnsafeCodePlugin',
|
||||
'DeprecateAliasPlugin',
|
||||
// Suggest '@return never'
|
||||
'.phan/plugins/AddNeverReturnTypePlugin.php',
|
||||
// Still have false positives to suppress
|
||||
// '.phan/plugins/StaticVariableMisusePlugin.php',
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use ast\Node;
|
||||
use Phan\Analysis\BlockExitStatusChecker;
|
||||
use Phan\CodeBase;
|
||||
use Phan\Language\Element\Func;
|
||||
use Phan\Language\Element\Method;
|
||||
use Phan\Language\Type\NeverType;
|
||||
use Phan\PluginV3;
|
||||
use Phan\PluginV3\AnalyzeFunctionCapability;
|
||||
use Phan\PluginV3\AnalyzeMethodCapability;
|
||||
|
||||
/**
|
||||
* This plugin checks if a function or method will not return (and has no overrides).
|
||||
* If the function doesn't have a return type of never.
|
||||
* then this plugin will emit an issue.
|
||||
*
|
||||
* It hooks into two events:
|
||||
*
|
||||
* - analyzeMethod
|
||||
* Once all methods are parsed, this method will be called
|
||||
* on every method in the code base
|
||||
*
|
||||
* - analyzeFunction
|
||||
* Once all functions have been parsed, this method will
|
||||
* be called on every function in the code base.
|
||||
*
|
||||
* A plugin file must
|
||||
*
|
||||
* - Contain a class that inherits from \Phan\PluginV3
|
||||
*
|
||||
* - End by returning an instance of that class.
|
||||
*
|
||||
* It is assumed without being checked that plugins aren't
|
||||
* mangling state within the passed code base or context.
|
||||
*
|
||||
* Note: When adding new plugins,
|
||||
* add them to the corresponding section of README.md
|
||||
*/
|
||||
final class NeverReturnPlugin extends PluginV3 implements
|
||||
AnalyzeFunctionCapability,
|
||||
AnalyzeMethodCapability
|
||||
{
|
||||
|
||||
/**
|
||||
* @param CodeBase $code_base
|
||||
* The code base in which the method exists
|
||||
*
|
||||
* @param Method $method
|
||||
* A method being analyzed
|
||||
*
|
||||
* @override
|
||||
*/
|
||||
public function analyzeMethod(
|
||||
CodeBase $code_base,
|
||||
Method $method
|
||||
): void {
|
||||
$stmts_list = self::getStatementListToAnalyze($method);
|
||||
if ($stmts_list === null) {
|
||||
// check for abstract methods, generators, etc.
|
||||
return;
|
||||
}
|
||||
if ($method->getFQSEN() !== $method->getDefiningFQSEN()) {
|
||||
// Check if this was inherited by a descendant class.
|
||||
return;
|
||||
}
|
||||
|
||||
if ($method->getUnionType()->hasType(NeverType::instance(false))) {
|
||||
return;
|
||||
}
|
||||
if ($method->isOverriddenByAnother()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This modifies the nodes in place, check this last
|
||||
if (!BlockExitStatusChecker::willUnconditionallyNeverReturn($stmts_list)) {
|
||||
return;
|
||||
}
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
$method->getContext(),
|
||||
'PhanPluginNeverReturnMethod',
|
||||
"Method {METHOD} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead",
|
||||
[$method->getRepresentationForIssue(), $method->getUnionType(), 'never']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CodeBase $code_base
|
||||
* The code base in which the function exists
|
||||
*
|
||||
* @param Func $function
|
||||
* A function or closure being analyzed
|
||||
*
|
||||
* @override
|
||||
*/
|
||||
public function analyzeFunction(
|
||||
CodeBase $code_base,
|
||||
Func $function
|
||||
): void {
|
||||
$stmts_list = self::getStatementListToAnalyze($function);
|
||||
if ($stmts_list === null) {
|
||||
// check for abstract methods, generators, etc.
|
||||
return;
|
||||
}
|
||||
|
||||
if ($function->getUnionType()->hasType(NeverType::instance(false))) {
|
||||
return;
|
||||
}
|
||||
// This modifies the nodes in place, check this last
|
||||
if (!BlockExitStatusChecker::willUnconditionallyNeverReturn($stmts_list)) {
|
||||
return;
|
||||
}
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
$function->getContext(),
|
||||
'PhanPluginNeverReturnFunction',
|
||||
"Function {FUNCTION} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead",
|
||||
[$function->getRepresentationForIssue(), $function->getUnionType(), 'never']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Func|Method $func
|
||||
* @return ?Node - returns null if there's no statement list to analyze
|
||||
*/
|
||||
private static function getStatementListToAnalyze($func): ?Node
|
||||
{
|
||||
if (!$func->hasNode()) {
|
||||
return null;
|
||||
} elseif ($func->hasYield()) {
|
||||
// generators always return Generator.
|
||||
return null;
|
||||
}
|
||||
$node = $func->getNode();
|
||||
if (!$node) {
|
||||
return null;
|
||||
}
|
||||
return $node->children['stmts'];
|
||||
}
|
||||
}
|
||||
|
||||
// Every plugin needs to return an instance of itself at the
|
||||
// end of the file in which it's defined.
|
||||
return new NeverReturnPlugin();
|
||||
@@ -116,7 +116,7 @@ class AvoidableGetterVisitor extends PluginAwarePostAnalysisVisitor
|
||||
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->lineno),
|
||||
$issue_name,
|
||||
"Can replace {METHOD} with {PROPERTY}",
|
||||
[ASTReverter::toShortString($node), '$this->' . $property_name]
|
||||
|
||||
@@ -95,7 +95,7 @@ class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
|
||||
$normalized_case_cond = is_object($case_cond) ? ASTReverter::toShortString($case_cond) : self::normalizeSwitchKey($case_cond);
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($case_node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($case_node->lineno),
|
||||
'PhanPluginDuplicateSwitchCase',
|
||||
"Duplicate/Equivalent switch case({STRING_LITERAL}) detected in switch statement - the later entry will be ignored in favor of case {CODE} at line {LINE}.",
|
||||
[$normalized_case_cond, ASTReverter::toShortString($case_constant_set[$cond_key]->children['cond']), $case_constant_set[$cond_key]->lineno],
|
||||
@@ -171,7 +171,7 @@ class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if ($old_index !== null) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($children[$i]->lineno),
|
||||
(clone $this->context)->withLineNumberStart($children[$i]->lineno),
|
||||
'PhanPluginDuplicateSwitchCaseLooseEquality',
|
||||
"Switch case({STRING_LITERAL}) is loosely equivalent (==) to an earlier case ({STRING_LITERAL}) in switch statement - the earlier entry may be chosen instead.",
|
||||
[self::normalizeSwitchKey($values_to_check[$i]), self::normalizeSwitchKey($values_to_check[$old_index])],
|
||||
@@ -227,7 +227,7 @@ class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
|
||||
$normalized_arm_expr_cond = ASTReverter::toShortString($arm_expr_cond);
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($lineno),
|
||||
(clone $this->context)->withLineNumberStart($lineno),
|
||||
'PhanPluginDuplicateMatchArmExpression',
|
||||
"Duplicate match arm expression({STRING_LITERAL}) detected in match expression - the later entry will be ignored in favor of expression {CODE} at line {LINE}.",
|
||||
[$normalized_arm_expr_cond, ASTReverter::toShortString($arm_expr_constant_set[$cond_key][0]), $arm_expr_constant_set[$cond_key][1]],
|
||||
@@ -302,7 +302,7 @@ class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if (is_string($key) && strncmp($key, self::HASH_PREFIX, strlen(self::HASH_PREFIX)) === 0) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($entry->lineno),
|
||||
(clone $this->context)->withLineNumberStart($entry->lineno),
|
||||
'PhanPluginDuplicateArrayKeyExpression',
|
||||
"Duplicate dynamic array key expression ({CODE}) detected in array - the earlier entry at line {LINE} will be ignored if the expression had the same value.",
|
||||
[ASTReverter::toShortString($entry->children['key']), $old_entry->lineno],
|
||||
@@ -315,7 +315,7 @@ class DuplicateArrayKeyVisitor extends PluginAwarePostAnalysisVisitor
|
||||
$normalized_key = self::normalizeKey($key);
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($entry->lineno),
|
||||
(clone $this->context)->withLineNumberStart($entry->lineno),
|
||||
'PhanPluginDuplicateArrayKey',
|
||||
"Duplicate/Equivalent array key value({STRING_LITERAL}) detected in array - the earlier entry {CODE} at line {LINE} will be ignored.",
|
||||
[$normalized_key, ASTReverter::toShortString($old_entry->children['key']), $old_entry->lineno],
|
||||
|
||||
@@ -351,7 +351,7 @@ class RedundantNodePostAnalysisVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if ($hash === $prev_hash) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($child->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($child->lineno ?? $node->lineno),
|
||||
'PhanPluginDuplicateAdjacentStatement',
|
||||
"Statement {CODE} is a duplicate of the statement on the above line. Suppress this issue instance if there's a good reason for this.",
|
||||
[ASTReverter::toShortString($child)]
|
||||
@@ -476,7 +476,7 @@ class RedundantNodePreAnalysisVisitor extends PluginAwarePreAnalysisVisitor
|
||||
if (isset($condition_set[$cond_hash])) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($cond->lineno ?? $children[$i]->lineno),
|
||||
(clone $this->context)->withLineNumberStart($cond->lineno ?? $children[$i]->lineno),
|
||||
'PhanPluginDuplicateIfCondition',
|
||||
'Saw the same condition {CODE} in an earlier if/elseif statement',
|
||||
[ASTReverter::toShortString($cond)]
|
||||
@@ -490,7 +490,7 @@ class RedundantNodePreAnalysisVisitor extends PluginAwarePreAnalysisVisitor
|
||||
if (($stmts->children ?? null) && ASTHasher::hash($stmts) === ASTHasher::hash($children[$N - 2]->children['stmts'])) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($children[$N - 1]->lineno),
|
||||
(clone $this->context)->withLineNumberStart($children[$N - 1]->lineno),
|
||||
'PhanPluginDuplicateIfStatements',
|
||||
'The statements of the else duplicate the statements of the previous if/elseif statement with condition {CODE}',
|
||||
[ASTReverter::toShortString($children[$N - 2]->children['cond'])]
|
||||
@@ -522,7 +522,7 @@ class RedundantNodePreAnalysisVisitor extends PluginAwarePreAnalysisVisitor
|
||||
if ($prev_hash === $cur_hash) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($catches[$i]->lineno),
|
||||
(clone $this->context)->withLineNumberStart($catches[$i]->lineno),
|
||||
'PhanPluginDuplicateCatchStatementBody',
|
||||
'The implementation of catch({CODE}) and catch({CODE}) are identical, and can be combined if the application only needs to supports php 7.1 and newer',
|
||||
[
|
||||
|
||||
@@ -111,7 +111,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
|
||||
(clone $this->context)->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
|
||||
'PhanPluginEmptyStatementIf',
|
||||
'Empty statement list statement detected for the last if/elseif statement',
|
||||
[]
|
||||
@@ -188,7 +188,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||
'PhanPluginEmptyStatementForLoop',
|
||||
'Empty statement list statement detected for the for loop',
|
||||
[]
|
||||
@@ -216,7 +216,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||
'PhanPluginEmptyStatementWhileLoop',
|
||||
'Empty statement list statement detected for the while loop',
|
||||
[]
|
||||
@@ -244,7 +244,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($stmts_node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
||||
'PhanPluginEmptyStatementDoWhileLoop',
|
||||
'Empty statement list statement detected for the do-while loop',
|
||||
[]
|
||||
@@ -273,7 +273,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($stmts_node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
||||
'PhanPluginEmptyStatementForeachLoop',
|
||||
'Empty statement list statement detected for the foreach loop',
|
||||
[]
|
||||
@@ -292,7 +292,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if (!$this->hasTODOComment($try_node->lineno, $node, $node->children['catches']->children[0]->lineno ?? $finally_node->lineno ?? null)) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($try_node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($try_node->lineno),
|
||||
'PhanPluginEmptyStatementTryBody',
|
||||
'Empty statement list statement detected for the try statement\'s body',
|
||||
[]
|
||||
@@ -303,7 +303,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if (!$this->hasTODOComment($finally_node->lineno, $node)) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($finally_node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($finally_node->lineno),
|
||||
'PhanPluginEmptyStatementTryFinally',
|
||||
'Empty statement list statement detected for the try\'s finally body',
|
||||
[]
|
||||
@@ -348,7 +348,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->lineno),
|
||||
'PhanPluginEmptyStatementSwitch',
|
||||
'No side effects seen for any cases of this switch statement',
|
||||
[]
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@ class InlineHTMLPlugin extends PluginV3 implements
|
||||
}
|
||||
$this->emitIssue(
|
||||
$code_base,
|
||||
clone($context)->withLineNumberStart($token[2]),
|
||||
(clone $context)->withLineNumberStart($token[2]),
|
||||
$issue,
|
||||
$message,
|
||||
[StringUtil::jsonEncode(self::truncate($token[1]))]
|
||||
|
||||
@@ -144,7 +144,7 @@ class InvokePHPNativeSyntaxCheckPlugin extends PluginV3 implements
|
||||
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
clone($context)->withLineNumberStart($lineno),
|
||||
(clone $context)->withLineNumberStart($lineno),
|
||||
'PhanNativePHPSyntaxCheckPlugin',
|
||||
'Saw error or notice for {FILE} --syntax-check: {DETAILS}',
|
||||
[
|
||||
@@ -182,6 +182,9 @@ class InvokeExecutionPromise
|
||||
/** @var string the raw bytes from stdout with serialized data */
|
||||
private $raw_stdout = '';
|
||||
|
||||
/** @var string */
|
||||
private $fallback_error = '';
|
||||
|
||||
/** @var Context has the file name being analyzed */
|
||||
private $context;
|
||||
|
||||
@@ -190,7 +193,7 @@ class InvokeExecutionPromise
|
||||
|
||||
public function __construct(string $binary, string $file_contents, Context $context)
|
||||
{
|
||||
$this->context = clone($context);
|
||||
$this->context = clone $context;
|
||||
$new_file_contents = Parser::removeShebang($file_contents);
|
||||
// TODO: Use symfony process
|
||||
// Note: We might have invalid utf-8, ensure that the streams are opened in binary mode.
|
||||
@@ -252,7 +255,10 @@ class InvokeExecutionPromise
|
||||
}
|
||||
$this->process = $process;
|
||||
|
||||
self::streamPutContents($pipes[0], $new_file_contents);
|
||||
error_clear_last();
|
||||
if (!self::streamPutContents($pipes[0], $new_file_contents)) {
|
||||
$this->fallback_error = \error_get_last()['message'] ?? '';
|
||||
}
|
||||
}
|
||||
$this->pipes = $pipes;
|
||||
|
||||
@@ -290,17 +296,18 @@ class InvokeExecutionPromise
|
||||
/**
|
||||
* @param resource $stream stream to write $file_contents to before fclose()
|
||||
* @param string $file_contents
|
||||
* @return void
|
||||
* See https://bugs.php.net/bug.php?id=39598
|
||||
*/
|
||||
private static function streamPutContents($stream, string $file_contents): void
|
||||
private static function streamPutContents($stream, string $file_contents): bool
|
||||
{
|
||||
try {
|
||||
while (strlen($file_contents) > 0) {
|
||||
$bytes_written = fwrite($stream, $file_contents);
|
||||
$bytes_written = with_disabled_phan_error_handler(/** @return int|false */ static function () use ($stream, $file_contents) {
|
||||
return @fwrite($stream, $file_contents);
|
||||
});
|
||||
if ($bytes_written === false) {
|
||||
error_log('failed to write in ' . __METHOD__);
|
||||
return;
|
||||
CLI::printWarningToStderr('failed to write in ' . __METHOD__);
|
||||
return false;
|
||||
}
|
||||
if ($bytes_written === 0) {
|
||||
$read_streams = [];
|
||||
@@ -316,8 +323,8 @@ class InvokeExecutionPromise
|
||||
// $stream is ready to be written to?
|
||||
$bytes_written = fwrite($stream, $file_contents);
|
||||
if (!$bytes_written) {
|
||||
error_log('failed to write in ' . __METHOD__ . ' but the stream should be ready');
|
||||
return;
|
||||
CLI::printToStderr('failed to write in ' . __METHOD__ . ' but the stream should be ready');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ($bytes_written > 0) {
|
||||
@@ -327,6 +334,7 @@ class InvokeExecutionPromise
|
||||
} finally {
|
||||
fclose($stream);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -390,6 +398,14 @@ class InvokeExecutionPromise
|
||||
if (!$this->done) {
|
||||
throw new RangeException("Called " . __METHOD__ . " too early");
|
||||
}
|
||||
if ($this->error === '') {
|
||||
// There was an error running the process, but no output to stdout.
|
||||
$result = "No output was detected. Is " . var_representation($this->binary) . " a relative or absolute path to an executable PHP binary?";
|
||||
if ($this->fallback_error !== '') {
|
||||
$result .= ' Error sending file contents to syntax check: ' . $this->fallback_error;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
return $this->error;
|
||||
}
|
||||
|
||||
@@ -409,6 +425,9 @@ class InvokeExecutionPromise
|
||||
return $this->binary;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function __wakeup()
|
||||
{
|
||||
$this->tmp_path = null;
|
||||
|
||||
@@ -111,6 +111,9 @@ class MoreSpecificElementTypePlugin extends PluginV3 implements
|
||||
if ($declared_return_type->isStrictSubtypeOf($code_base, $actual_type)) {
|
||||
return false;
|
||||
}
|
||||
if (!$actual_type->isStrictSubtypeOf($code_base, $declared_return_type)) {
|
||||
return false;
|
||||
}
|
||||
if (!$actual_type->canCastToUnionType($declared_return_type, $code_base)) {
|
||||
// Don't warn here about type mismatches such as int->string or object->array, but do warn about SubClass->BaseClass.
|
||||
// Phan should warn elsewhere about those mismatches
|
||||
|
||||
@@ -134,7 +134,7 @@ class NotFullyQualifiedUsageVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($expression->lineno),
|
||||
(clone $this->context)->withLineNumberStart($expression->lineno),
|
||||
$issue_type,
|
||||
$issue_msg,
|
||||
[$function_name, $this->context->getNamespace()]
|
||||
@@ -167,7 +167,9 @@ class NotFullyQualifiedUsageVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$constant_name_lower = strtolower($constant_name);
|
||||
if ($constant_name_lower === 'true' || $constant_name_lower === 'false' || $constant_name_lower === 'null') {
|
||||
// These are keywords and are the same in any namespace
|
||||
// These are treated similarly to keywords and are either
|
||||
// 1. the same in any namespace
|
||||
// 2. `use somethingelse\true [as false];`
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -183,7 +185,7 @@ class NotFullyQualifiedUsageVisitor extends PluginAwarePostAnalysisVisitor
|
||||
{
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($expression->lineno),
|
||||
(clone $this->context)->withLineNumberStart($expression->lineno),
|
||||
self::NotFullyQualifiedGlobalConstant,
|
||||
'Expected usage of {CONST} to be fully qualified or have a use statement but none were found in namespace {NAMESPACE}',
|
||||
[$constant_name, $this->context->getNamespace()]
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
use Microsoft\PhpParser\Node\Expression\CallExpression;
|
||||
use Microsoft\PhpParser\Node\QualifiedName;
|
||||
use Microsoft\PhpParser\Node\ReservedWord;
|
||||
use Microsoft\PhpParser\Token;
|
||||
use Phan\AST\TolerantASTConverter\NodeUtils;
|
||||
use Phan\CodeBase;
|
||||
use Phan\IssueInstance;
|
||||
@@ -29,15 +31,26 @@ call_user_func(static function (): void {
|
||||
$expected_name = $instance->getTemplateParameters()[0];
|
||||
$edits = [];
|
||||
foreach ($contents->getNodesAtLine($line) as $node) {
|
||||
if (!$node instanceof QualifiedName) {
|
||||
if ($node instanceof QualifiedName) {
|
||||
if ($node->globalSpecifier || $node->relativeSpecifier) {
|
||||
IssueFixer::debug("skip already globally or relatively specified\n");
|
||||
// This is already qualified
|
||||
continue;
|
||||
}
|
||||
$actual_name = (new NodeUtils($contents->getContents()))->phpParserNameToString($node);
|
||||
} elseif ($node instanceof ReservedWord) {
|
||||
// A reserved word in other contexts such as 'float'
|
||||
$token = $node->children;
|
||||
if (!$token instanceof Token) {
|
||||
continue;
|
||||
}
|
||||
$actual_name = (new NodeUtils($contents->getContents()))->tokenToString($token);
|
||||
} else {
|
||||
IssueFixer::debug("skip wrong node kind " . get_class($node) . "\n");
|
||||
continue;
|
||||
}
|
||||
if ($node->globalSpecifier || $node->relativeSpecifier) {
|
||||
// This is already qualified
|
||||
continue;
|
||||
}
|
||||
$actual_name = (new NodeUtils($contents->getContents()))->phpParserNameToString($node);
|
||||
if ($actual_name !== $expected_name) {
|
||||
IssueFixer::debug("skip '$actual_name' !== '$expected_name'\n");
|
||||
continue;
|
||||
}
|
||||
$is_actual_call = $node->parent instanceof CallExpression;
|
||||
@@ -58,7 +71,8 @@ call_user_func(static function (): void {
|
||||
} else {
|
||||
// Don't do this if the global function this refers to doesn't exist.
|
||||
// TODO: Support namespaced functions
|
||||
if (!$code_base->hasGlobalConstantWithFQSEN(FullyQualifiedGlobalConstantName::fromFullyQualifiedString($actual_name))) {
|
||||
if (!$code_base->hasGlobalConstantWithFQSEN(FullyQualifiedGlobalConstantName::fromFullyQualifiedString($actual_name)) &&
|
||||
!in_array(strtolower($actual_name), ['null', 'true', 'false'], true)) {
|
||||
IssueFixer::debug("skip attempt to fix $actual_name because the constant was not found in the global scope\n");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ class PHPDocInWrongCommentPlugin extends PluginV3 implements
|
||||
if ($comment_string[0] === '#' && substr($comment_string, 1, 1) !== '[') {
|
||||
$this->emitIssue(
|
||||
$code_base,
|
||||
(clone($context))->withLineNumberStart($token[2]),
|
||||
(clone $context)->withLineNumberStart($token[2]),
|
||||
'PhanPluginPHPDocHashComment',
|
||||
'Saw comment starting with {COMMENT} in {COMMENT} - consider using {COMMENT} instead to avoid confusion with php 8.0 {COMMENT} attributes',
|
||||
['#', StringUtil::jsonEncode(self::truncate(trim($comment_string))), '//', '#[']
|
||||
@@ -76,7 +76,7 @@ class PHPDocInWrongCommentPlugin extends PluginV3 implements
|
||||
}
|
||||
$this->emitIssue(
|
||||
$code_base,
|
||||
(clone($context))->withLineNumberStart($token[2]),
|
||||
(clone $context)->withLineNumberStart($token[2]),
|
||||
'PhanPluginPHPDocInWrongComment',
|
||||
'Saw possible phpdoc annotation in ordinary block comment {COMMENT}. PHPDoc comments should start with "/**" (followed by whitespace), not "/*"',
|
||||
[StringUtil::jsonEncode(self::truncate($comment_string))]
|
||||
|
||||
+3
-3
@@ -60,7 +60,7 @@ class PhanSelfCheckPlugin extends PluginV3 implements AnalyzeFunctionCallCapabil
|
||||
) use (
|
||||
$fmt_index,
|
||||
$arg_index
|
||||
): void {
|
||||
): void {
|
||||
if (\count($args) <= $fmt_index) {
|
||||
return;
|
||||
}
|
||||
@@ -96,7 +96,7 @@ class PhanSelfCheckPlugin extends PluginV3 implements AnalyzeFunctionCallCapabil
|
||||
) use (
|
||||
$type_index,
|
||||
$arg_index
|
||||
): void {
|
||||
): void {
|
||||
if (\count($args) <= $type_index) {
|
||||
return;
|
||||
}
|
||||
@@ -136,7 +136,7 @@ class PhanSelfCheckPlugin extends PluginV3 implements AnalyzeFunctionCallCapabil
|
||||
) use (
|
||||
$type_index,
|
||||
$arg_index
|
||||
): void {
|
||||
): void {
|
||||
if (\count($args) <= $type_index) {
|
||||
return;
|
||||
}
|
||||
|
||||
+2
-2
@@ -706,8 +706,8 @@ class PrintfCheckerPlugin extends PluginV3 implements AnalyzeFunctionCallCapabil
|
||||
* @param CodeBase $code_base
|
||||
* @param Context $context
|
||||
* @param string $fmt_str
|
||||
* @param ConversionSpec[][] $types_of_arg contains array of ConversionSpec for
|
||||
* each position in the untranslated format string.
|
||||
* @param associative-array<int,array<mixed,ConversionSpec|true>> $types_of_arg contains array of ConversionSpec for
|
||||
* each position in the untranslated format string.
|
||||
*/
|
||||
protected static function validateTranslations(CodeBase $code_base, Context $context, string $fmt_str, array $types_of_arg): void
|
||||
{
|
||||
|
||||
+10
@@ -596,6 +596,16 @@ This is only useful in applications or libraries that print output in only a few
|
||||
|
||||
Suppression comments can use the issue name `PhanPluginRemoveDebugAny` to suppress all issue types emitted by this plugin.
|
||||
|
||||
#### AddNeverReturnTypePlugin.php
|
||||
|
||||
This plugin checks if a function or method will not return (and has no overrides).
|
||||
If the function doesn't have a return type of never.
|
||||
then this plugin will emit an issue.
|
||||
Closures and short error functions are currently not checked
|
||||
|
||||
- **PhanPluginNeverReturnMethod**: `Method {METHOD} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead`
|
||||
- **PhanPluginNeverReturnFunction**: `Function {FUNCTION} never returns and has a return type of {TYPE}, but phpdoc type {TYPE} could be used instead`
|
||||
|
||||
### 4. Demo plugins:
|
||||
|
||||
These files demonstrate plugins for Phan.
|
||||
|
||||
@@ -121,7 +121,7 @@ class RedundantAssignmentPreAnalysisVisitor extends PluginAwarePreAnalysisVisito
|
||||
$issue_name = 'PhanPluginRedundantAssignment';
|
||||
}
|
||||
if ($this->context->isInLoop()) {
|
||||
$this->context->deferCheckToOutermostLoop(function (Context $context_after_loop) use ($issue_name, $var_name, $variable_type): void {
|
||||
$this->context->deferCheckToOutermostLoop(function (Context $context_after_loop) use ($issue_name, $var_name, $variable_type, $var): void {
|
||||
$new_variable = $context_after_loop->getScope()->getVariableByNameOrNull($var_name);
|
||||
if (!$new_variable) {
|
||||
return;
|
||||
@@ -135,7 +135,7 @@ class RedundantAssignmentPreAnalysisVisitor extends PluginAwarePreAnalysisVisito
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
$this->context,
|
||||
(clone $this->context)->withLineNumberStart($var->lineno),
|
||||
$issue_name,
|
||||
'Assigning {TYPE} to variable ${VARIABLE} which already has that value',
|
||||
[$variable_type, $var_name]
|
||||
@@ -145,7 +145,7 @@ class RedundantAssignmentPreAnalysisVisitor extends PluginAwarePreAnalysisVisito
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
$this->context,
|
||||
(clone $this->context)->withLineNumberStart($var->lineno),
|
||||
$issue_name,
|
||||
'Assigning {TYPE} to variable ${VARIABLE} which already has that value',
|
||||
[$expr_type, $var_name]
|
||||
|
||||
@@ -38,7 +38,10 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
*/
|
||||
public function getAnalyzeFunctionCallClosures(CodeBase $code_base): array
|
||||
{
|
||||
$warn_remove_debug_call = static function (CodeBase $code_base, Context $context, FunctionInterface $function): void {
|
||||
$warn_remove_debug_call = static function (CodeBase $code_base, Context $context, FunctionInterface $function, ?Node $node): void {
|
||||
if ($node) {
|
||||
$context = (clone $context)->withLineNumberStart($node->lineno);
|
||||
}
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
$context,
|
||||
@@ -55,12 +58,12 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
Context $context,
|
||||
Func $function,
|
||||
array $unused_args,
|
||||
?Node $unused_node = null
|
||||
?Node $node = null
|
||||
) use ($warn_remove_debug_call): void {
|
||||
if (self::shouldSuppressDebugIssues($code_base, $context)) {
|
||||
return;
|
||||
}
|
||||
$warn_remove_debug_call($code_base, $context, $function);
|
||||
$warn_remove_debug_call($code_base, $context, $function, $node);
|
||||
};
|
||||
/**
|
||||
* @param list<Node|string|int|float> $args the nodes for the arguments to the invocation
|
||||
@@ -71,7 +74,7 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
Context $context,
|
||||
Func $function,
|
||||
array $args,
|
||||
?Node $unused_node = null
|
||||
?Node $node = null
|
||||
) use ($warn_remove_debug_call): void {
|
||||
if (self::shouldSuppressDebugIssues($code_base, $context)) {
|
||||
return;
|
||||
@@ -84,7 +87,7 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
return;
|
||||
}
|
||||
}
|
||||
$warn_remove_debug_call($code_base, $context, $function);
|
||||
$warn_remove_debug_call($code_base, $context, $function, $node);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -95,7 +98,7 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
Context $context,
|
||||
Func $function,
|
||||
array $args,
|
||||
?Node $unused_node = null
|
||||
?Node $node = null
|
||||
) use ($warn_remove_debug_call): void {
|
||||
$file = $args[0] ?? null;
|
||||
if (!$file instanceof Node || $file->kind !== ast\AST_CONST || !in_array($file->children['name']->children['name'] ?? null, ['STDOUT', 'STDERR'], true)) {
|
||||
@@ -106,7 +109,7 @@ class RemoveDebugStatementPlugin extends PluginV3 implements
|
||||
return;
|
||||
}
|
||||
|
||||
$warn_remove_debug_call($code_base, $context, $function);
|
||||
$warn_remove_debug_call($code_base, $context, $function, $node);
|
||||
};
|
||||
|
||||
return [
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@ class SleepCheckerVisitor extends PluginAwarePostAnalysisVisitor
|
||||
*/
|
||||
private function analyzeReturnValue($expr_node, int $lineno, array &$sleep_properties): void
|
||||
{
|
||||
$context = clone($this->context)->withLineNumberStart($lineno);
|
||||
$context = (clone $this->context)->withLineNumberStart($lineno);
|
||||
if (!($expr_node instanceof Node)) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
|
||||
@@ -60,7 +60,7 @@ class StrictComparisonPlugin extends PluginV3 implements
|
||||
$index,
|
||||
$index_name,
|
||||
$min_args
|
||||
): void {
|
||||
): void {
|
||||
if (count($args) < $min_args) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ class SuspiciousParamOrderVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if ($function->isPHPInternal()) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->lineno),
|
||||
self::SuspiciousParamOrderInternal,
|
||||
'Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS} of {FUNCTION}',
|
||||
[
|
||||
@@ -213,7 +213,7 @@ class SuspiciousParamOrderVisitor extends PluginAwarePostAnalysisVisitor
|
||||
} else {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->lineno),
|
||||
self::SuspiciousParamOrder,
|
||||
'Suspicious order for arguments named {DETAILS} - These are being passed to parameters {DETAILS} of {FUNCTION} defined at {FILE}:{LINE}',
|
||||
[
|
||||
@@ -280,7 +280,7 @@ class SuspiciousParamOrderVisitor extends PluginAwarePostAnalysisVisitor
|
||||
if ($function->isPHPInternal()) {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
|
||||
self::SuspiciousParamPositionInternal,
|
||||
'Suspicious order for argument {DETAILS} - This is getting passed to parameter {DETAILS} of {FUNCTION}',
|
||||
[
|
||||
@@ -292,7 +292,7 @@ class SuspiciousParamOrderVisitor extends PluginAwarePostAnalysisVisitor
|
||||
} else {
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
clone($this->context)->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($args[$i]->lineno ?? $node->lineno),
|
||||
self::SuspiciousParamPosition,
|
||||
'Suspicious order for argument {DETAILS} - This is getting passed to parameter {DETAILS} of {FUNCTION} defined at {FILE}:{LINE}',
|
||||
[
|
||||
|
||||
@@ -132,7 +132,8 @@ class UnknownElementTypePlugin extends PluginV3 implements
|
||||
$inferred_types[$i] = $combined_type;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
$this
|
||||
);
|
||||
}
|
||||
|
||||
@@ -350,7 +351,8 @@ class UnknownElementTypePlugin extends PluginV3 implements
|
||||
$inferred_types[$i] = $combined_type;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
$this
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,6 @@ final class UnreachableCodeVisitor extends PluginAwarePostAnalysisVisitor
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$context = clone($this->context)->withLineNumberStart($next_node->lineno);
|
||||
if ($this->context->isInFunctionLikeScope()) {
|
||||
if ($this->context->getFunctionLikeInScope($this->code_base)->checkHasSuppressIssueAndIncrementCount('PhanPluginUnreachableCode')) {
|
||||
// don't emit the below issue.
|
||||
@@ -102,7 +101,7 @@ final class UnreachableCodeVisitor extends PluginAwarePostAnalysisVisitor
|
||||
}
|
||||
$this->emitPluginIssue(
|
||||
$this->code_base,
|
||||
$context,
|
||||
(clone $this->context)->withLineNumberStart($next_node->lineno),
|
||||
'PhanPluginUnreachableCode',
|
||||
'Unreachable statement detected',
|
||||
[]
|
||||
|
||||
+3
-3
@@ -54,7 +54,7 @@ class WhitespacePlugin extends PluginV3 implements
|
||||
if ($newline_position !== false) {
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
clone($context)->withLineNumberStart(self::calculateLine($file_contents, $newline_position)),
|
||||
(clone $context)->withLineNumberStart(self::calculateLine($file_contents, $newline_position)),
|
||||
self::CarriageReturn,
|
||||
'The first occurrence of a carriage return ("\r") was seen here. Running "dos2unix" can fix that.'
|
||||
);
|
||||
@@ -63,7 +63,7 @@ class WhitespacePlugin extends PluginV3 implements
|
||||
if ($tab_position !== false) {
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
clone($context)->withLineNumberStart(self::calculateLine($file_contents, $tab_position)),
|
||||
(clone $context)->withLineNumberStart(self::calculateLine($file_contents, $tab_position)),
|
||||
self::Tab,
|
||||
'The first occurrence of a tab was seen here. Running "expand" can fix that.'
|
||||
);
|
||||
@@ -71,7 +71,7 @@ class WhitespacePlugin extends PluginV3 implements
|
||||
if (preg_match('/[ \t]\r?$/mS', $file_contents, $match, PREG_OFFSET_CAPTURE)) {
|
||||
self::emitIssue(
|
||||
$code_base,
|
||||
clone($context)->withLineNumberStart(self::calculateLine($file_contents, $match[0][1])),
|
||||
(clone $context)->withLineNumberStart(self::calculateLine($file_contents, $match[0][1])),
|
||||
self::WhitespaceTrailing,
|
||||
'The first occurrence of trailing whitespace was seen here.'
|
||||
);
|
||||
|
||||
Vendored
+60
@@ -1,5 +1,65 @@
|
||||
Phan NEWS
|
||||
|
||||
Sep 14 2021, Phan 5.2.1
|
||||
-----------------------
|
||||
|
||||
New Features:
|
||||
- Improve analysis of conditions detecting the empty/non-empty array. (#4523)
|
||||
E.g. support `if ($x === []) {...} else {...}`, `if (count($x) > 0) {...} else {...}`, etc.
|
||||
- Raise severity of `PhanTypeNonVarPassByRef` to critical. It throws an Error in php 8.0+. (#3830)
|
||||
- Infer from conditions such as `in_array($var, $array, true)` that $array is a non-empty array and that $var is of a type found in the elements of $array. (#2511)
|
||||
|
||||
Plugins:
|
||||
- Emit a proper warning when `InvokePHPNativeSyntaxCheckPlugin` is passed a path to a php binary that is missing or invalid (or if the syntax check crashed). (#4116)
|
||||
Previously, Phan would crash with an error such as `fwrite(): write of 8196 bytes failed with errno=32 Broken pipe`
|
||||
- Fix false positive `PhanPluginMoreSpecificActualReturnType` for phpdoc array shape return type and returned generic array. (#4531)
|
||||
|
||||
Bug fixes:
|
||||
- Fix type inference logic that was looking for array specializations rather than array or any array subtype (#4512)
|
||||
- Fix false positive `PhanUnreferencedClosure`/`PhanUnreferencedFunction` seen when a closure/function name was passed to a function such as `uasort` that already had a plugin analyzing calls of the closure. (#4090, #4519)
|
||||
- Fix false positive/negative `PhanTypeMissingReturn*` instances. (#4537)
|
||||
|
||||
The check was wrong and should have been checking for a statement list that throws/exits.
|
||||
Return statements can be omitted if a function unconditionally exits.
|
||||
|
||||
Also, check for the real `never` return type when emitting issues
|
||||
- Fix false positive `PhanPossiblyUndefinedGlobalVariable*` instance when `global $var` is used within a conditional. (#4539)
|
||||
- Fix false positive `PhanPluginRedundantAssignmentInLoop` instance when a variable is modified in a catch statement with a break/continue. (#4542)
|
||||
- Fix some incorrect line numbers in some plugin issues.
|
||||
- Fix crash seen when parsing intersection types containing union types such as `non-empty-array&array<'a'|'b'>` (#4544)
|
||||
|
||||
Maintenance:
|
||||
- Fix old return type signature for `get_headers` (#3273)
|
||||
- Print instructions on how to upgrade php-ast to 1.0.11+ if an outdated version is installed. (#4532)
|
||||
|
||||
Aug 26 2021, Phan 5.2.0
|
||||
-----------------------
|
||||
|
||||
Plugins:
|
||||
- Add `AddNeverReturnTypePlugin`` which will suggest adding a phpdoc return type of `@return never`. (#4468)
|
||||
|
||||
Bug fixes:
|
||||
- When using the polyfill parser, properly parse nullable class property declarations as nullable. (#4492)
|
||||
- Don't emit PhanIncompatibleRealPropertyType for private base property. (#4426)
|
||||
- Fix false positive where a method overriding an existing method could be treated as having overrides. (#4502)
|
||||
- Consistently support `numeric-string` in all phpdoc
|
||||
- Fix false positive `PhanTypeMismatchPropertyDefaultReal` warning for literal integer and `float` typed property. (#4507)
|
||||
- Fix false positive warnings such as `PhanImpossibleTypeComparison` about string subtypes not casting to other string subtypes (#4514)
|
||||
|
||||
Maintenance:
|
||||
- Change internal representation of FunctionSignatureMap delta files.
|
||||
- Add a new exit status bit flag to `BlockExitStatusChecker` to indicate that a function will exit or infinitely loop (`STATUS_NORETURN`) (#4468)
|
||||
- Internally represent the base function map using php 8.0 signatures instead of php 7.3 - applying deltas backwards has the same result (#4478)
|
||||
|
||||
Aug 07 2021, Phan 5.1.0
|
||||
-----------------------
|
||||
|
||||
New Features (Analysis):
|
||||
- Support running Phan 5 with AST version 80 instead of 85 but warn about php-ast being outdated.
|
||||
|
||||
Documentation:
|
||||
- Update documentation of `--target-php-version` and `--minimum-target-php-version`
|
||||
|
||||
Aug 01 2021, Phan 5.0.0
|
||||
-----------------------
|
||||
|
||||
|
||||
Vendored
+2
-3
@@ -5,13 +5,12 @@ information is available or can be deduced. Phan has a good (but not comprehensi
|
||||
and can track values in a few use cases (e.g. arrays, integers, and strings).
|
||||
|
||||
[](https://dev.azure.com/tysonandre775/phan/_build/latest?definitionId=3&branchName=v5)
|
||||
[](https://github.com/phan/phan/actions/workflows/main.yml?query=branch%3Av5)
|
||||
[](https://ci.appveyor.com/project/TysonAndre/phan/branch/v5)
|
||||
[](https://gitter.im/phan/phan?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||
[](https://packagist.org/packages/phan/phan)
|
||||
[](https://github.com/phan/phan/blob/v5/LICENSE)
|
||||
|
||||
This is the unstable branch for an upcoming Phan 5 release. The branch for the older stable Phan 4 release line is [here](https://github.com/phan/phan/tree/v4).
|
||||
|
||||
# Getting Started
|
||||
|
||||
The easiest way to use Phan is via Composer.
|
||||
@@ -23,7 +22,7 @@ composer require phan/phan
|
||||
With Phan installed, you'll want to [create a `.phan/config.php` file](https://github.com/phan/phan/wiki/Getting-Started#creating-a-config-file) in
|
||||
your project to tell Phan how to analyze your source code. Once configured, you can run it via `./vendor/bin/phan`.
|
||||
|
||||
Phan depends on PHP 7.2+ with the [php-ast](https://github.com/nikic/php-ast) extension (1.0.14+ is preferred) and supports analyzing PHP version 7.0-8.1 syntax.
|
||||
Phan 5 depends on PHP 7.2+ with the [php-ast](https://github.com/nikic/php-ast) extension (1.0.14+ is preferred) and supports analyzing PHP version 7.0-8.1 syntax.
|
||||
Installation instructions for php-ast can be found [here](https://github.com/nikic/php-ast#installation).
|
||||
(Phan can be used without php-ast by using the CLI option `--allow-polyfill-parser`, but there are slight differences in the parsing of doc comments)
|
||||
|
||||
|
||||
Vendored
-5
@@ -6,11 +6,6 @@ trigger:
|
||||
- v5
|
||||
|
||||
jobs:
|
||||
- template: .azure/job.yml
|
||||
parameters:
|
||||
configurationName: PHP_72_NTS
|
||||
phpVersion: 7.2
|
||||
vmImage: 'ubuntu-16.04'
|
||||
- template: .azure/job.yml
|
||||
parameters:
|
||||
configurationName: PHP_73_NTS
|
||||
|
||||
Vendored
+1
-1
@@ -35,7 +35,7 @@
|
||||
"symfony/console": "^3.2|^4.0|^5.0",
|
||||
"symfony/polyfill-mbstring": "^1.11.0",
|
||||
"symfony/polyfill-php80": "^1.20.0",
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2"
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.14+ is recommended.",
|
||||
|
||||
+38
-35
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "cc0af707fc392b3959172556c6e575f4",
|
||||
"content-hash": "9b0f8da866a879ae2b1c4847a19ea935",
|
||||
"packages": [
|
||||
{
|
||||
"name": "composer/semver",
|
||||
@@ -616,16 +616,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v5.3.6",
|
||||
"version": "v5.3.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2"
|
||||
"reference": "8b1008344647462ae6ec57559da166c2bfa5e16a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
|
||||
"reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a",
|
||||
"reference": "8b1008344647462ae6ec57559da166c2bfa5e16a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -695,7 +695,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v5.3.6"
|
||||
"source": "https://github.com/symfony/console/tree/v5.3.7"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -711,7 +711,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-07-27T19:10:22+00:00"
|
||||
"time": "2021-08-25T20:02:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
@@ -1347,16 +1347,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v5.3.3",
|
||||
"version": "v5.3.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
|
||||
"reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
|
||||
"reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5",
|
||||
"reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1410,7 +1410,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v5.3.3"
|
||||
"source": "https://github.com/symfony/string/tree/v5.3.7"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1426,20 +1426,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-06-27T11:44:38+00:00"
|
||||
"time": "2021-08-26T08:00:08+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tysonandre/var_representation_polyfill",
|
||||
"version": "0.0.2",
|
||||
"version": "0.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/TysonAndre/var_representation_polyfill.git",
|
||||
"reference": "3f17999ee1f257319ddc6721dd26ebbc5d175f33"
|
||||
"reference": "0a942e74e18af5514749895507bc6ca7ab96399a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/3f17999ee1f257319ddc6721dd26ebbc5d175f33",
|
||||
"reference": "3f17999ee1f257319ddc6721dd26ebbc5d175f33",
|
||||
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/0a942e74e18af5514749895507bc6ca7ab96399a",
|
||||
"reference": "0a942e74e18af5514749895507bc6ca7ab96399a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1450,6 +1450,9 @@
|
||||
"phan/phan": "^4.0",
|
||||
"phpunit/phpunit": "^8.5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-var_representation": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@@ -1468,16 +1471,16 @@
|
||||
"name": "Tyson Andre"
|
||||
}
|
||||
],
|
||||
"description": "Polyfill for var_representation",
|
||||
"description": "Polyfill for var_representation: convert a variable to a string in a way that fixes the shortcomings of var_export",
|
||||
"keywords": [
|
||||
"var_export",
|
||||
"var_representation"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
|
||||
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.0.2"
|
||||
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.1"
|
||||
},
|
||||
"time": "2021-06-26T18:55:02+00:00"
|
||||
"time": "2021-08-16T00:12:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
@@ -1779,33 +1782,33 @@
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
"version": "1.13.0",
|
||||
"version": "1.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpspec/prophecy.git",
|
||||
"reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
|
||||
"reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
|
||||
"reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
|
||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
|
||||
"reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/instantiator": "^1.2",
|
||||
"php": "^7.2 || ~8.0, <8.1",
|
||||
"php": "^7.2 || ~8.0, <8.2",
|
||||
"phpdocumentor/reflection-docblock": "^5.2",
|
||||
"sebastian/comparator": "^3.0 || ^4.0",
|
||||
"sebastian/recursion-context": "^3.0 || ^4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/phpspec": "^6.0",
|
||||
"phpspec/phpspec": "^6.0 || ^7.0",
|
||||
"phpunit/phpunit": "^8.0 || ^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.11.x-dev"
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1840,9 +1843,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phpspec/prophecy/issues",
|
||||
"source": "https://github.com/phpspec/prophecy/tree/1.13.0"
|
||||
"source": "https://github.com/phpspec/prophecy/tree/1.14.0"
|
||||
},
|
||||
"time": "2021-03-17T13:42:18+00:00"
|
||||
"time": "2021-09-10T09:02:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
@@ -2143,16 +2146,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "8.5.19",
|
||||
"version": "8.5.20",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "496281b64ec781856ed0a583483b5923b4033722"
|
||||
"reference": "9deefba183198398a09b927a6ac6bc1feb0b7b70"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/496281b64ec781856ed0a583483b5923b4033722",
|
||||
"reference": "496281b64ec781856ed0a583483b5923b4033722",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9deefba183198398a09b927a6ac6bc1feb0b7b70",
|
||||
"reference": "9deefba183198398a09b927a6ac6bc1feb0b7b70",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2224,7 +2227,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.19"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.20"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2236,7 +2239,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2021-07-31T15:15:06+00:00"
|
||||
"time": "2021-08-31T06:44:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/code-unit-reverse-lookup",
|
||||
|
||||
Vendored
+2
-8
@@ -395,7 +395,7 @@ class PhanPHPLinterOpts
|
||||
/**
|
||||
* @param string $msg - optional message
|
||||
* @param int $exit_code - process exit code.
|
||||
* @return void - exits with $exit_code
|
||||
* @return never - exits with $exit_code
|
||||
*/
|
||||
public function usage($msg = '', $exit_code = 0)
|
||||
{
|
||||
@@ -537,7 +537,6 @@ EOB;
|
||||
}
|
||||
if (!is_string($value)) {
|
||||
$this->usage('--flycheck-file should be passed a string value', 1);
|
||||
break; // unreachable
|
||||
}
|
||||
$this->temporary_file_map = [$this->file_list[0] => $value];
|
||||
break;
|
||||
@@ -549,7 +548,6 @@ EOB;
|
||||
$mapping = json_decode($value, true);
|
||||
if (!\is_array($mapping)) {
|
||||
$this->usage('--temporary-file-map should be a JSON encoded map from source file to temporary file to analyze instead', 1);
|
||||
break; // unreachable
|
||||
}
|
||||
$this->temporary_file_map = $mapping;
|
||||
|
||||
@@ -574,19 +572,17 @@ EOB;
|
||||
if (!is_string($path)) {
|
||||
$this->print_usage_on_error = $print_usage_on_error;
|
||||
$this->usage(sprintf("Error: asked to analyze path %s which is not a string", json_encode($path) ?: 'invalid'), 1);
|
||||
exit(1);
|
||||
}
|
||||
if (!file_exists($path)) {
|
||||
$this->print_usage_on_error = $print_usage_on_error;
|
||||
$this->usage(sprintf("Error: asked to analyze file %s which does not exist", json_encode($path) ?: 'invalid'), 1);
|
||||
exit(1);
|
||||
}
|
||||
$this->file_list[] = $path;
|
||||
break;
|
||||
case 'h':
|
||||
case 'help':
|
||||
// never returns
|
||||
$this->usage();
|
||||
break;
|
||||
case 'd':
|
||||
case 'disable-usage-on-error':
|
||||
$print_usage_on_error = false;
|
||||
@@ -604,7 +600,6 @@ EOB;
|
||||
case 'output-mode':
|
||||
if (!is_string($value) || !in_array($value, ['text', 'json', 'csv', 'codeclimate', 'checkstyle', 'pylint', 'phan_client'], true)) {
|
||||
$this->usage("Expected --output-mode {text,json,csv,codeclimate,checkstyle,pylint}, but got " . json_encode($value), 1);
|
||||
break; // unreachable
|
||||
}
|
||||
if ($value === 'phan_client') {
|
||||
// We're requesting the default
|
||||
@@ -614,7 +609,6 @@ EOB;
|
||||
break;
|
||||
default:
|
||||
$this->usage("Unknown option '-$key'", 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
||||
+13
-14
@@ -579,8 +579,6 @@ class ContextNode
|
||||
return [];
|
||||
}
|
||||
|
||||
// TODO: Should this check that count($class_list) > 0 instead? Or just always check?
|
||||
// TODO: Improve for intersection types
|
||||
if (\count($class_list) === 0) {
|
||||
if (!$union_type->hasTypeMatchingCallback(function (Type $type) use ($expected_type_categories): bool {
|
||||
if ($this->node instanceof Node) {
|
||||
@@ -1778,17 +1776,6 @@ class ContextNode
|
||||
}
|
||||
|
||||
$code_base = $this->code_base;
|
||||
|
||||
$constant_name_lower = \strtolower($constant_name);
|
||||
if ($constant_name_lower === 'true' || $constant_name_lower === 'false' || $constant_name_lower === 'null') {
|
||||
return $code_base->getGlobalConstantByFQSEN(
|
||||
// @phan-suppress-next-line PhanThrowTypeMismatchForCall
|
||||
FullyQualifiedGlobalConstantName::fromFullyQualifiedString(
|
||||
$constant_name_lower
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$context = $this->context;
|
||||
$flags = $node->children['name']->flags ?? 0;
|
||||
try {
|
||||
@@ -1834,6 +1821,18 @@ class ContextNode
|
||||
} catch (FQSENException $e) {
|
||||
throw new AssertionError("Impossible FQSENException: " . $e->getMessage());
|
||||
}
|
||||
|
||||
// Handle true/false/null, even for edge cases such as `use const null as somethingelse;`
|
||||
$fqsen_lower = \strtolower($fqsen->__toString());
|
||||
if (\in_array($fqsen_lower, ['\true', '\false', '\null'], true)) {
|
||||
return $code_base->getGlobalConstantByFQSEN(
|
||||
// @phan-suppress-next-line PhanThrowTypeMismatchForCall
|
||||
FullyQualifiedGlobalConstantName::fromFullyQualifiedString(
|
||||
$fqsen_lower
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// This is either a fully qualified constant,
|
||||
// or a relative constant for which nothing was found in the namespace
|
||||
|
||||
@@ -1884,7 +1883,7 @@ class ContextNode
|
||||
|
||||
/**
|
||||
* @throws IssueException
|
||||
* @return no-return
|
||||
* @return never
|
||||
*/
|
||||
private function throwUndeclaredGlobalConstantIssueException(CodeBase $code_base, Context $context, FullyQualifiedGlobalConstantName $fqsen): void
|
||||
{
|
||||
|
||||
@@ -57,6 +57,10 @@ class InferPureSnippetVisitor extends InferPureVisitor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitReturn(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
@@ -79,17 +83,29 @@ class InferPureSnippetVisitor extends InferPureVisitor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitYield(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitYieldFrom(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
// TODO(optional) track actual goto labels
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitGoto(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
@@ -97,6 +113,10 @@ class InferPureSnippetVisitor extends InferPureVisitor
|
||||
|
||||
// NOTE: Checks of assignment, increment or decrement are deferred to --unused-variable-detection
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitUnset(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
|
||||
+5
-1
@@ -105,6 +105,10 @@ class InferPureVisitor extends AnalysisVisitor
|
||||
// visitEcho
|
||||
// visitPrint
|
||||
// visitIncludeOrExec
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visit(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
@@ -681,7 +685,7 @@ class InferPureVisitor extends AnalysisVisitor
|
||||
public function visitClosure(Node $node): void
|
||||
{
|
||||
$closure_fqsen = FullyQualifiedFunctionName::fromClosureInContext(
|
||||
(clone($this->context))->withLineNumberStart($node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->lineno),
|
||||
$node
|
||||
);
|
||||
if (!$this->code_base->hasFunctionWithFQSEN($closure_fqsen)) {
|
||||
|
||||
@@ -67,32 +67,55 @@ class ScopeImpactCheckingVisitor extends InferPureVisitor
|
||||
}
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitContinue(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitBreak(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitPreInc(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitPreDec(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitPostInc(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitPostDec(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
@@ -110,25 +133,37 @@ class ScopeImpactCheckingVisitor extends InferPureVisitor
|
||||
$this->visitVar($var);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitGoto(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitAssignOp(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitAssign(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function visitReturn(Node $node): void
|
||||
{
|
||||
throw new NodeException($node);
|
||||
|
||||
+50
-22
@@ -65,7 +65,18 @@ Shim::load();
|
||||
* each time they are invoked,
|
||||
* so it's possible to have multiple callers use this without affecting each other.
|
||||
*
|
||||
* Compatibility: PHP 7.0-7.4
|
||||
* Compatibility: PHP 7.0-8.1
|
||||
*
|
||||
* XXX: This aims to match the line numbers that php-ast would generate (for compatibility) where reasonable,
|
||||
* even when counterintuitive. See https://github.com/phan/phan/issues/4520
|
||||
*
|
||||
* - The way php (and as a result php-ast) is getting the line number for anything
|
||||
* that has 1 or more children is to use the line number of the first non-null child.
|
||||
* (skipping most tokens such as `[`, `return`, etc, and having a line number for literal
|
||||
* values (php-ast does not wrap the AST_ZVAL type php uses internally in a Node)
|
||||
* - If there are no non-null child nodes, then php uses the current line number of the lexer.
|
||||
*
|
||||
* which are the line numbers php uses in
|
||||
*
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
@@ -114,7 +125,7 @@ class TolerantASTConverter
|
||||
public const AST_VERSION = 85;
|
||||
|
||||
// The versions that this supports
|
||||
public const SUPPORTED_AST_VERSIONS = [self::AST_VERSION];
|
||||
public const SUPPORTED_AST_VERSIONS = [80, self::AST_VERSION];
|
||||
|
||||
private const _IGNORED_STRING_TOKEN_KIND_SET = [
|
||||
TokenKind::OpenBraceDollarToken => true,
|
||||
@@ -449,7 +460,7 @@ class TolerantASTConverter
|
||||
}
|
||||
if (!\is_int($lineno)) {
|
||||
foreach ($parser_nodes as $parser_node) {
|
||||
$child_node_line = static::getEndLine($parser_node);
|
||||
$child_node_line = static::getStartLine($parser_node);
|
||||
if ($child_node_line > 0) {
|
||||
$lineno = $child_node_line;
|
||||
break;
|
||||
@@ -871,12 +882,14 @@ class TolerantASTConverter
|
||||
return $str;
|
||||
},
|
||||
/**
|
||||
* @return never
|
||||
* @throws InvalidNodeException
|
||||
*/
|
||||
'Microsoft\PhpParser\MissingToken' => static function (PhpParser\MissingToken $unused_node, int $_): void {
|
||||
throw new InvalidNodeException();
|
||||
},
|
||||
/**
|
||||
* @return never
|
||||
* @throws InvalidNodeException
|
||||
*/
|
||||
'Microsoft\PhpParser\SkippedToken' => static function (PhpParser\SkippedToken $unused_node, int $_): void {
|
||||
@@ -1003,11 +1016,12 @@ class TolerantASTConverter
|
||||
return new ast\Node($type, 0, ['var' => static::phpParserNodeToAstNode($n->operand)], $start_line);
|
||||
},
|
||||
'Microsoft\PhpParser\Node\Expression\PrintIntrinsicExpression' => static function (PhpParser\Node\Expression\PrintIntrinsicExpression $n, int $start_line): ast\Node {
|
||||
$expr_node = static::phpParserNodeToAstNode($n->expression);
|
||||
return new ast\Node(
|
||||
ast\AST_PRINT,
|
||||
0,
|
||||
['expr' => static::phpParserNodeToAstNode($n->expression)],
|
||||
$start_line
|
||||
['expr' => $expr_node],
|
||||
$expr_node->lineno ?? (self::getStartLine($n->expression) ?: $start_line)
|
||||
);
|
||||
},
|
||||
/** @return ?ast\Node */
|
||||
@@ -1076,14 +1090,17 @@ class TolerantASTConverter
|
||||
$ast_expr = ($element_value !== null && !($element_value instanceof MissingToken)) ? static::phpParserNodeToAstNode($array_element->elementValue) : null;
|
||||
if ($kind === \ast\AST_YIELD) {
|
||||
$element_key = $array_element->elementKey ?? null;
|
||||
$key = $element_key !== null ? static::phpParserNodeToAstNode($element_key) : null;
|
||||
$children = [
|
||||
'value' => $ast_expr,
|
||||
'key' => $element_key !== null ? static::phpParserNodeToAstNode($element_key) : null,
|
||||
'key' => $key,
|
||||
];
|
||||
$start_line = $key->lineno ?? $ast_expr->lineno ?? $start_line;
|
||||
} else {
|
||||
$children = [
|
||||
'expr' => $ast_expr,
|
||||
];
|
||||
$start_line = $ast_expr->lineno ?? $start_line;
|
||||
}
|
||||
return new ast\Node(
|
||||
$kind,
|
||||
@@ -1233,6 +1250,7 @@ class TolerantASTConverter
|
||||
$kind = $n->breakOrContinueKeyword->kind === TokenKind::ContinueKeyword ? ast\AST_CONTINUE : ast\AST_BREAK;
|
||||
$breakout_level = $n->breakoutLevel;
|
||||
if ($breakout_level !== null) {
|
||||
$start_line = self::getStartLine($breakout_level);
|
||||
$breakout_level = static::phpParserNodeToAstNode($breakout_level);
|
||||
if (!\is_int($breakout_level)) {
|
||||
$breakout_level = null;
|
||||
@@ -1254,8 +1272,8 @@ class TolerantASTConverter
|
||||
$catch_list_node,
|
||||
$variableName !== null ? static::variableTokenToString($variableName) : null,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable return_null_on_empty is false.
|
||||
static::phpParserStmtlistToAstNode($n->compoundStatement, $start_line, false),
|
||||
$start_line
|
||||
static::phpParserStmtlistToAstNode($n->compoundStatement, self::getStartLine($n->compoundStatement) ?: $start_line, false),
|
||||
$variableName !== null ? self::getStartLine($variableName) : $start_line
|
||||
);
|
||||
},
|
||||
'Microsoft\PhpParser\Node\Statement\InterfaceDeclaration' => static function (PhpParser\Node\Statement\InterfaceDeclaration $n, int $start_line): ast\Node {
|
||||
@@ -1421,10 +1439,12 @@ class TolerantASTConverter
|
||||
if ($expr instanceof Token && $expr->kind === TokenKind::CommaToken) {
|
||||
continue;
|
||||
}
|
||||
$expr_node = static::phpParserNodeToAstNode($expr);
|
||||
$start_line = ($expr_node->lineno ?? self::getStartLine($expr)) ?: $start_line;
|
||||
$ast_echos[] = new ast\Node(
|
||||
ast\AST_ECHO,
|
||||
0,
|
||||
['expr' => static::phpParserNodeToAstNode($expr)],
|
||||
['expr' => $expr_node],
|
||||
$start_line
|
||||
);
|
||||
}
|
||||
@@ -1525,7 +1545,7 @@ class TolerantASTConverter
|
||||
ast\AST_ECHO,
|
||||
0,
|
||||
['expr' => static::tokenToRawString($n->text)],
|
||||
$start_line
|
||||
self::getStartLine($n->text) ?: $start_line
|
||||
);
|
||||
},
|
||||
/** @suppress PhanTypeMismatchArgument TODO: Make ForStatement have more accurate docs? */
|
||||
@@ -1586,7 +1606,7 @@ class TolerantASTConverter
|
||||
'Microsoft\PhpParser\Node\Statement\ReturnStatement' => static function (PhpParser\Node\Statement\ReturnStatement $n, int $start_line): ast\Node {
|
||||
$e = $n->expression;
|
||||
$expr_node = $e !== null ? static::phpParserNodeToAstNode($e) : null;
|
||||
return new ast\Node(ast\AST_RETURN, 0, ['expr' => $expr_node], $start_line);
|
||||
return new ast\Node(ast\AST_RETURN, 0, ['expr' => $expr_node], $expr_node->lineno ?? $start_line);
|
||||
},
|
||||
/** @return ast\Node|ast\Node[] */
|
||||
'Microsoft\PhpParser\Node\Statement\FunctionStaticDeclaration' => static function (PhpParser\Node\Statement\FunctionStaticDeclaration $n, int $start_line) {
|
||||
@@ -1712,8 +1732,8 @@ class TolerantASTConverter
|
||||
return static::astNodeTry(
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable return_null_on_empty is false.
|
||||
static::phpParserStmtlistToAstNode($n->compoundStatement, $start_line, false), // $n->try
|
||||
static::phpParserCatchlistToAstCatchlist($n->catchClauses ?? [], $start_line),
|
||||
$finally_clause !== null ? static::phpParserStmtlistToAstNode($finally_clause->compoundStatement, self::getStartLine($finally_clause), false) : null,
|
||||
static::phpParserCatchlistToAstCatchlist($n->catchClauses ?? [], self::getEndLine($n->compoundStatement) ?: $start_line),
|
||||
$finally_clause !== null ? static::phpParserStmtlistToAstNode($finally_clause->compoundStatement, self::getStartLine($finally_clause->compoundStatement), false) : null,
|
||||
$start_line
|
||||
);
|
||||
},
|
||||
@@ -1824,7 +1844,7 @@ class TolerantASTConverter
|
||||
foreach ($catches as $parser_catch) {
|
||||
$children[] = static::phpParserNonValueNodeToAstNode($parser_catch);
|
||||
}
|
||||
return new ast\Node(ast\AST_CATCH_LIST, 0, $children, $children[0]->lineno ?? $lineno);
|
||||
return new ast\Node(ast\AST_CATCH_LIST, 0, $children, $lineno);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2405,11 +2425,12 @@ class TolerantASTConverter
|
||||
if (!$expression) {
|
||||
throw new InvalidNodeException();
|
||||
}
|
||||
$expr_node = static::phpParserNodeToAstNode($expression);
|
||||
return new ast\Node(
|
||||
ast\AST_THROW,
|
||||
0,
|
||||
['expr' => static::phpParserNodeToAstNode($expression)],
|
||||
$start_line
|
||||
['expr' => $expr_node],
|
||||
$expr_node->lineno ?? $start_line
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2630,21 +2651,23 @@ class TolerantASTConverter
|
||||
|
||||
private static function phpParserIfStmtToAstIfStmt(PhpParser\Node\Statement\IfStatementNode $node, int $start_line): ast\Node
|
||||
{
|
||||
$if_elem_expr = static::phpParserNodeToAstNode($node->expression);
|
||||
$if_elem = static::astIfElem(
|
||||
static::phpParserNodeToAstNode($node->expression),
|
||||
$if_elem_expr,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable return_null_on_empty is false.
|
||||
static::phpParserStmtlistToAstNode(
|
||||
$node->statements,
|
||||
self::getStartLineOfStatementOrStatements($node->statements) ?: $start_line,
|
||||
false
|
||||
),
|
||||
$start_line
|
||||
$if_elem_expr->lineno ?? (self::getStartLine($node->expression) ?: $start_line)
|
||||
);
|
||||
$if_elems = [$if_elem];
|
||||
foreach ($node->elseIfClauses as $else_if) {
|
||||
$if_elem_line = self::getStartLine($else_if);
|
||||
$else_if_node = static::phpParserNodeToAstNode($else_if->expression);
|
||||
$if_elem_line = $else_if_node->lineno ?? (self::getStartLine($else_if->expression) ?: $start_line);
|
||||
$if_elem = static::astIfElem(
|
||||
static::phpParserNodeToAstNode($else_if->expression),
|
||||
$else_if_node,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable return_null_on_empty is false.
|
||||
static::phpParserStmtlistToAstNode(
|
||||
$else_if->statements,
|
||||
@@ -2664,7 +2687,7 @@ class TolerantASTConverter
|
||||
$parser_else_line
|
||||
);
|
||||
}
|
||||
return new ast\Node(ast\AST_IF, 0, $if_elems, $start_line);
|
||||
return new ast\Node(ast\AST_IF, 0, $if_elems, $if_elems[0]->lineno);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2843,8 +2866,13 @@ class TolerantASTConverter
|
||||
$line = $prop_elems[0]->lineno ?? (self::getStartLine($n) ?: $start_line);
|
||||
$prop_decl = new ast\Node(ast\AST_PROP_DECL, 0, $prop_elems, $line);
|
||||
$type_line = static::getEndLine($n->typeDeclarationList) ?: $start_line;
|
||||
|
||||
$type = static::phpParserUnionTypeToAstNode($n->typeDeclarationList, $type_line);
|
||||
if ($n->questionToken !== null && $type !== null) {
|
||||
$type = new ast\Node(ast\AST_NULLABLE_TYPE, 0, ['type' => $type], $start_line);
|
||||
}
|
||||
return new ast\Node(ast\AST_PROP_GROUP, $flags, [
|
||||
'type' => static::phpParserUnionTypeToAstNode($n->typeDeclarationList, $type_line),
|
||||
'type' => $type,
|
||||
'props' => $prop_decl,
|
||||
'attributes' => static::phpParserAttributeGroupsToAstAttributeList($n->attributes),
|
||||
], $line);
|
||||
|
||||
+35
-30
@@ -412,42 +412,47 @@ class Analysis
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($plugin_set->getAnalyzeFunctionCallClosures($code_base) as $fqsen_string => $closure) {
|
||||
try {
|
||||
if (\strpos($fqsen_string, '::') !== false) {
|
||||
// This is an override of a method.
|
||||
[$class, $method_name] = \explode('::', $fqsen_string, 2);
|
||||
$class_fqsen = FullyQualifiedClassName::fromFullyQualifiedString($class);
|
||||
if (!$code_base->hasClassWithFQSEN($class_fqsen)) {
|
||||
continue;
|
||||
}
|
||||
$class = $code_base->getClassByFQSEN($class_fqsen);
|
||||
// Note: This is used because it will create methods such as __construct if they do not exist.
|
||||
if ($class->hasMethodWithName($code_base, $method_name, false)) {
|
||||
$method = $class->getMethodByName($code_base, $method_name);
|
||||
$method->addFunctionCallAnalyzer($closure);
|
||||
|
||||
$methods_by_defining_fqsen = $methods_by_defining_fqsen ?? $code_base->getMethodsMapGroupedByDefiningFQSEN();
|
||||
$fqsen = FullyQualifiedMethodName::fromFullyQualifiedString($fqsen_string);
|
||||
if (!$methods_by_defining_fqsen->offsetExists($fqsen)) {
|
||||
// To fix issues such as https://github.com/phan/phan/issues/4090, this (1) always calls addFunctionCallAnalyzer,
|
||||
// and (2) automatically loads definitions for functions and methods by calling hasFunctionWithFQSEN (etc.), so that internal function definitions used by previous plugins can be iterated over by the next plugin being called (e.g. if getFunctionSet is called).
|
||||
// @phan-suppress-next-line PhanAccessMethodInternal
|
||||
foreach ($plugin_set->getAnalyzeFunctionCallPluginSet() as $plugin) {
|
||||
foreach ($plugin->getAnalyzeFunctionCallClosures($code_base) as $fqsen_string => $closure) {
|
||||
try {
|
||||
if (\strpos($fqsen_string, '::') !== false) {
|
||||
// This is an override of a method.
|
||||
[$class, $method_name] = \explode('::', $fqsen_string, 2);
|
||||
$class_fqsen = FullyQualifiedClassName::fromFullyQualifiedString($class);
|
||||
if (!$code_base->hasClassWithFQSEN($class_fqsen)) {
|
||||
continue;
|
||||
}
|
||||
$class = $code_base->getClassByFQSEN($class_fqsen);
|
||||
// Note: This is used because it will create methods such as __construct if they do not exist.
|
||||
if ($class->hasMethodWithName($code_base, $method_name, false)) {
|
||||
$method = $class->getMethodByName($code_base, $method_name);
|
||||
$method->addFunctionCallAnalyzer($closure, $plugin);
|
||||
|
||||
foreach ($methods_by_defining_fqsen->offsetGet($fqsen) as $child_method) {
|
||||
$child_method->addFunctionCallAnalyzer($closure);
|
||||
$methods_by_defining_fqsen = $methods_by_defining_fqsen ?? $code_base->getMethodsMapGroupedByDefiningFQSEN();
|
||||
$fqsen = FullyQualifiedMethodName::fromFullyQualifiedString($fqsen_string);
|
||||
if (!$methods_by_defining_fqsen->offsetExists($fqsen)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($methods_by_defining_fqsen->offsetGet($fqsen) as $child_method) {
|
||||
$child_method->addFunctionCallAnalyzer($closure, $plugin);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// This is a function.
|
||||
$fqsen = FullyQualifiedFunctionName::fromFullyQualifiedString($fqsen_string);
|
||||
if ($code_base->hasFunctionWithFQSEN($fqsen)) {
|
||||
$function = $code_base->getFunctionByFQSEN($fqsen);
|
||||
$function->addFunctionCallAnalyzer($closure, $plugin);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// This is an override of a function.
|
||||
$fqsen = FullyQualifiedFunctionName::fromFullyQualifiedString($fqsen_string);
|
||||
if ($code_base->hasFunctionWithFQSEN($fqsen)) {
|
||||
$function = $code_base->getFunctionByFQSEN($fqsen);
|
||||
$function->setFunctionCallAnalyzer($closure);
|
||||
}
|
||||
} catch (FQSENException | InvalidArgumentException $e) {
|
||||
// @phan-suppress-next-line PhanPluginRemoveDebugCall
|
||||
\fprintf(STDERR, "getAnalyzeFunctionCallClosures returned an invalid FQSEN %s: %s\n", $fqsen_string, $e->getMessage());
|
||||
}
|
||||
} catch (FQSENException | InvalidArgumentException $e) {
|
||||
// @phan-suppress-next-line PhanPluginRemoveDebugCall
|
||||
\fprintf(STDERR, "getAnalyzeFunctionCallClosures returned an invalid FQSEN %s: %s\n", $fqsen_string, $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,7 +330,7 @@ class AssignOperatorAnalysisVisitor extends FlagVisitorImplementation
|
||||
|
||||
// If both left and right are arrays, then this is array
|
||||
// concatenation.
|
||||
if ($left->isGenericArray() && $right->isGenericArray()) {
|
||||
if ($left->isArray() && $right->isArray()) {
|
||||
BinaryOperatorFlagVisitor::checkInvalidArrayShapeCombination($code_base, $context, $node, $left, $right);
|
||||
if ($left->isEqualTo($right)) {
|
||||
return $left;
|
||||
|
||||
@@ -283,7 +283,7 @@ class AssignOperatorFlagVisitor extends FlagVisitorImplementation
|
||||
|
||||
// If both left and right are arrays, then this is array
|
||||
// concatenation.
|
||||
if ($left->isGenericArray() && $right->isGenericArray()) {
|
||||
if ($left->isArray() && $right->isArray()) {
|
||||
if ($left->isEqualTo($right)) {
|
||||
return $left;
|
||||
}
|
||||
|
||||
@@ -89,10 +89,11 @@ final class BinaryOperatorFlagVisitor extends FlagVisitorImplementation
|
||||
/**
|
||||
* @throws AssertionError
|
||||
* @suppress PhanUnreferencedPrivateMethod this is referenced by __invoke
|
||||
* @return never
|
||||
*/
|
||||
private function handleMissing(Node $node): void
|
||||
{
|
||||
throw new AssertionError("All flags must match. Found kind=" . Debug::nodeName($node) . ', flags=' . Element::flagDescription($node) . ' raw flags=' . $node->flags . ' at ' . $this->context->withLineNumberStart((int)$node->lineno));
|
||||
throw new AssertionError("All flags must match. Found kind=" . Debug::nodeName($node) . ', flags=' . Element::flagDescription($node) . ' raw flags=' . $node->flags . ' at ' . (clone $this->context)->withLineNumberStart((int)$node->lineno));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -751,7 +752,7 @@ final class BinaryOperatorFlagVisitor extends FlagVisitorImplementation
|
||||
|
||||
// If both left and right union types are arrays, then this is array
|
||||
// concatenation. (`$left + $right`)
|
||||
if ($left->isGenericArray() && $right->isGenericArray()) {
|
||||
if ($left->isArray() && $right->isArray()) {
|
||||
self::checkInvalidArrayShapeCombination($code_base, $context, $node, $left, $right);
|
||||
if ($left->isEqualTo($right)) {
|
||||
return $left;
|
||||
|
||||
@@ -44,11 +44,17 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
public const STATUS_CONTINUE = (1 << 22); // At least one branch leads to a continue statement
|
||||
public const STATUS_BREAK = (1 << 23); // At least one branch leads to a break statement
|
||||
public const STATUS_THROW = (1 << 24); // At least one branch leads to a throw statement
|
||||
public const STATUS_RETURN = (1 << 25); // At least one branch leads to a return/exit() statement (or an infinite loop)
|
||||
public const STATUS_RETURN = (1 << 25); // At least one branch leads to a return statement
|
||||
public const STATUS_NORETURN = (1 << 26); // At least one branch leads to a exit() statement (or an infinite loop)
|
||||
|
||||
public const STATUS_THROW_OR_RETURN_BITMASK =
|
||||
self::STATUS_THROW |
|
||||
self::STATUS_RETURN;
|
||||
self::STATUS_RETURN |
|
||||
self::STATUS_NORETURN;
|
||||
|
||||
public const STATUS_NOT_RETURN_BITMASK =
|
||||
self::STATUS_THROW |
|
||||
self::STATUS_NORETURN;
|
||||
|
||||
// Any status which doesn't lead to proceeding.
|
||||
public const STATUS_NOT_PROCEED_BITMASK =
|
||||
@@ -56,7 +62,8 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
self::STATUS_CONTINUE |
|
||||
self::STATUS_BREAK |
|
||||
self::STATUS_THROW |
|
||||
self::STATUS_RETURN;
|
||||
self::STATUS_RETURN |
|
||||
self::STATUS_NORETURN;
|
||||
|
||||
public const STATUS_BITMASK =
|
||||
self::STATUS_PROCEED |
|
||||
@@ -475,7 +482,7 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
{
|
||||
$status = $inner_status & ~self::UNEXITABLE_LOOP_INNER_STATUS;
|
||||
if ($status === 0) {
|
||||
return self::STATUS_RETURN; // this is an infinite loop, it didn't contain break/throw/return statements?
|
||||
return self::STATUS_NORETURN; // this is an infinite loop, it didn't contain break/throw/return statements?
|
||||
}
|
||||
if (($status & self::STATUS_BREAK) !== 0) {
|
||||
// if the inside of "while (true) {} contains a break statement,
|
||||
@@ -500,7 +507,7 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
*/
|
||||
public function visitExit(Node $node): int
|
||||
{
|
||||
return self::STATUS_RETURN;
|
||||
return self::STATUS_NORETURN;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -628,10 +635,14 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
return self::STATUS_PROCEED;
|
||||
}
|
||||
// The returned code for exit() is 'return', e.g. E_USER_ERROR makes trigger_error emit an error then abort execution.
|
||||
if (\in_array($name, ['E_ERROR', 'E_PARSE', 'E_CORE_ERROR', 'E_COMPILE_ERROR', 'E_USER_ERROR'], true)) {
|
||||
return self::STATUS_RETURN;
|
||||
// NOTE: Native errors either emit a notice about being invalid error types to pass to this function (e.g. E_ERROR).
|
||||
// must be one of E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE, or E_USER_DEPRECATED
|
||||
if ($name === 'E_USER_ERROR') {
|
||||
// Fatal error
|
||||
return self::STATUS_NORETURN;
|
||||
}
|
||||
if ($name === 'E_RECOVERABLE_ERROR') {
|
||||
if (!\in_array($name, ['E_USER_WARNING', 'E_USER_NOTICE', 'E_USER_DEPRECATED'], true)) {
|
||||
// Newer php versions throw a ValueError for invalid types.
|
||||
return self::STATUS_THROW;
|
||||
}
|
||||
|
||||
@@ -804,6 +815,14 @@ final class BlockExitStatusChecker extends KindVisitorImplementation
|
||||
return ((new self())->__invoke($node) & ~self::STATUS_THROW_OR_RETURN_BITMASK) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Will the node $node unconditionally throw or exit (or infinitely loop)
|
||||
*/
|
||||
public static function willUnconditionallyNeverReturn(Node $node): bool
|
||||
{
|
||||
return ((new self())->__invoke($node) & ~self::STATUS_NOT_RETURN_BITMASK) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Will the node $node unconditionally proceed (no break/continue, throw, or goto)
|
||||
*/
|
||||
|
||||
@@ -87,7 +87,8 @@ class CompositionAnalyzer
|
||||
} catch (IssueException $_) {
|
||||
$inherited_property_union_type = UnionType::empty();
|
||||
}
|
||||
if (!$property->isDynamicOrFromPHPDoc()) {
|
||||
// Don't complain about incompatible types if the base property is private, #4426
|
||||
if (!$property->isDynamicOrFromPHPDoc() && !$inherited_property->isPrivate()) {
|
||||
$real_property_type = $property->getRealUnionType()->asNormalizedTypes();
|
||||
$real_inherited_property_type = $inherited_property->getRealUnionType()->asNormalizedTypes();
|
||||
if (!$real_property_type->isEqualTo($real_inherited_property_type)) {
|
||||
|
||||
+51
-1
@@ -879,7 +879,7 @@ class ConditionVisitor extends KindVisitorImplementation implements ConditionVis
|
||||
$method = new ReflectionMethod(UnionType::class, $extract_types);
|
||||
/**
|
||||
* @param list<Node|mixed> $args
|
||||
* @suppress PhanPluginUnknownObjectMethodCall can't analye ReflectionMethod
|
||||
* @suppress PhanPluginUnknownObjectMethodCall can't analyze ReflectionMethod
|
||||
*/
|
||||
return static function (CodeBase $code_base, Context $context, Variable $variable, array $args) use ($method, $default_if_empty, $allow_undefined): void {
|
||||
// Change the type to match the is_a relationship
|
||||
@@ -1052,6 +1052,9 @@ class ConditionVisitor extends KindVisitorImplementation implements ConditionVis
|
||||
case 'array_key_exists':
|
||||
// @phan-suppress-next-line PhanPartialTypeMismatchArgument
|
||||
return $this->analyzeArrayKeyExists($args);
|
||||
case 'in_array':
|
||||
// @phan-suppress-next-line PhanPartialTypeMismatchArgument
|
||||
return $this->analyzeInArray($args);
|
||||
case 'defined':
|
||||
// @phan-suppress-next-line PhanPartialTypeMismatchArgument
|
||||
return $this->analyzeDefined($args);
|
||||
@@ -1148,6 +1151,53 @@ class ConditionVisitor extends KindVisitorImplementation implements ConditionVis
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<Node|string|int|float> $args
|
||||
*/
|
||||
private function analyzeInArray(array $args): Context
|
||||
{
|
||||
$context = $this->context;
|
||||
if (\count($args) < 2) {
|
||||
return $context;
|
||||
}
|
||||
// in_array($var, $array, [bool]) asserts that $var is a type found in the elements of $array
|
||||
// It also asserts $array is not empty
|
||||
$array_node = $args[1];
|
||||
if (!$array_node instanceof Node) {
|
||||
return $context;
|
||||
}
|
||||
if (\in_array($array_node->kind, [ast\AST_VAR, ast\AST_PROP, ast\AST_DIM], true)) {
|
||||
// in_array implies the array has at least one element, implying it is not falsey.
|
||||
$context = $this->updateVariableWithConditionalFilter(
|
||||
$array_node,
|
||||
$context,
|
||||
static function (UnionType $_): bool {
|
||||
return true;
|
||||
},
|
||||
static function (UnionType $type): UnionType {
|
||||
return $type->arrayTypesStrictCast()->nonFalseyClone();
|
||||
},
|
||||
true,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
$var_node = $args[0];
|
||||
if (!($var_node instanceof Node)) {
|
||||
return $context;
|
||||
}
|
||||
$array_value = UnionTypeVisitor::unionTypeFromNode($this->code_base, $this->context, $array_node)->arrayTypesStrictCastAllowEmpty();
|
||||
if ($array_value->isEmptyOrMixed()) {
|
||||
return $context;
|
||||
}
|
||||
$element_type = $array_value->genericArrayElementTypes(true, $this->code_base);
|
||||
if ($element_type->isEmptyOrMixed()) {
|
||||
return $context;
|
||||
}
|
||||
$is_strict = isset($args[2]) && UnionTypeVisitor::checkCondUnconditionalTruthiness($args[2]) === true;
|
||||
return $this->updateVariableWithNewType($var_node, $context, $element_type, true, $is_strict);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<Node|string|int|float> $args
|
||||
*/
|
||||
|
||||
@@ -44,4 +44,9 @@ interface BinaryCondition
|
||||
* @param Node|string|int|float $expr a node with a constant value
|
||||
*/
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr): ?Context;
|
||||
|
||||
/**
|
||||
* @return static the same operation but to analyze flipped operand orders
|
||||
*/
|
||||
public function withFlippedOperands(): self;
|
||||
}
|
||||
|
||||
@@ -4,8 +4,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace Phan\Analysis\ConditionVisitor;
|
||||
|
||||
use ast;
|
||||
use ast\Node;
|
||||
use Phan\Analysis\ConditionVisitorInterface;
|
||||
use Phan\Analysis\ConditionVisitor;
|
||||
use Phan\Analysis\NegatedConditionVisitor;
|
||||
use Phan\AST\UnionTypeVisitor;
|
||||
use Phan\Language\Context;
|
||||
|
||||
/**
|
||||
@@ -50,9 +54,49 @@ class ComparisonCondition implements BinaryCondition
|
||||
*/
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr): ?Context
|
||||
{
|
||||
$function_name = ConditionVisitor::getFunctionName($call_node);
|
||||
if (\is_string($function_name) && \strcasecmp($function_name, 'count') === 0) {
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$value = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr)->asSingleScalarValueOrNullOrSelf();
|
||||
if (\is_object($value) || $value < 0) {
|
||||
return null;
|
||||
}
|
||||
if ($this->assertsPositiveNumber($value)) {
|
||||
// e.g. `if (is_string($x) === true)`
|
||||
return (new ConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
} elseif ($this->assertsZeroOrLess($value)) {
|
||||
return (new NegatedConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|int|float|string|null $value
|
||||
*/
|
||||
private function assertsPositiveNumber($value): bool {
|
||||
if ($this->flags === ast\flags\BINARY_IS_GREATER) {
|
||||
return $value > 0;
|
||||
} elseif ($this->flags === ast\flags\BINARY_IS_GREATER_OR_EQUAL) {
|
||||
return $value >= 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool|int|float|string|null $value
|
||||
*/
|
||||
private function assertsZeroOrLess($value): bool {
|
||||
if ($this->flags === ast\flags\BINARY_IS_SMALLER) {
|
||||
return $value > 0 && $value <= 1;
|
||||
} elseif ($this->flags === ast\flags\BINARY_IS_SMALLER_OR_EQUAL) {
|
||||
// @phan-suppress-next-line PhanPluginComparisonNotStrictForScalar, PhanSuspiciousTruthyString
|
||||
return $value == 0 && $value <= 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @suppress PhanUnusedPublicMethodParameter
|
||||
*/
|
||||
@@ -60,4 +104,20 @@ class ComparisonCondition implements BinaryCondition
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
private const FLIP_OPERANDS = [
|
||||
ast\flags\BINARY_IS_GREATER => ast\flags\BINARY_IS_SMALLER,
|
||||
ast\flags\BINARY_IS_GREATER_OR_EQUAL => ast\flags\BINARY_IS_SMALLER_OR_EQUAL,
|
||||
ast\flags\BINARY_IS_SMALLER => ast\flags\BINARY_IS_GREATER,
|
||||
ast\flags\BINARY_IS_SMALLER_OR_EQUAL => ast\flags\BINARY_IS_GREATER_OR_EQUAL,
|
||||
];
|
||||
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
$flipped = self::FLIP_OPERANDS[$this->flags] ?? null;
|
||||
return isset($flipped) ? new self($flipped) : $this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class EqualsCondition implements BinaryCondition
|
||||
return $visitor->analyzeClassAssertion($object, $expr) ?? $visitor->getContext();
|
||||
}
|
||||
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr): ?Context
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr, bool $negate = false): ?Context
|
||||
{
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
@@ -48,20 +48,27 @@ class EqualsCondition implements BinaryCondition
|
||||
return null;
|
||||
}
|
||||
// Skip check for `if is_bool`, allow weaker comparisons such as `is_string($x) == 1`
|
||||
if (!$expr_type->isExclusivelyBoolTypes() && !UnionTypeVisitor::unionTypeFromNode($code_base, $context, $call_node)->isExclusivelyBoolTypes()) {
|
||||
$function_name = ConditionVisitor::getFunctionName($call_node);
|
||||
if (\is_string($function_name) && \strcasecmp($function_name, 'count') === 0) {
|
||||
if ($negate && $expr_type->containsTruthy()) {
|
||||
// Currently can't infer anything from `if (count($x) != 2)`
|
||||
return null;
|
||||
}
|
||||
// Fall through
|
||||
} elseif (!$expr_type->isExclusivelyBoolTypes() && !UnionTypeVisitor::unionTypeFromNode($code_base, $context, $call_node)->isExclusivelyBoolTypes()) {
|
||||
return null;
|
||||
}
|
||||
if (!$expr_type->containsFalsey()) {
|
||||
// e.g. `if (is_string($x) === true)`
|
||||
if ($negate ? !$expr_type->containsTruthy() : !$expr_type->containsFalsey()) {
|
||||
// e.g. `if (is_string($x) == true)`, or negated equals check such as `if (is_string($x) != false)`
|
||||
return (new ConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
} elseif (!$expr_type->containsTruthy()) {
|
||||
// e.g. `if (is_string($x) === false)`
|
||||
} elseif ($negate ? !$expr_type->containsFalsey() : !$expr_type->containsTruthy()) {
|
||||
// e.g. `if (is_string($x) == false)`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr): ?Context
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr, bool $negate = false): ?Context
|
||||
{
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
@@ -69,13 +76,19 @@ class EqualsCondition implements BinaryCondition
|
||||
if (!$expr_type->isExclusivelyBoolTypes() && !UnionTypeVisitor::unionTypeFromNode($code_base, $context, $complex_node)->isExclusivelyBoolTypes()) {
|
||||
return null;
|
||||
}
|
||||
if (!$expr_type->containsFalsey()) {
|
||||
if ($negate ? !$expr_type->containsTruthy() : !$expr_type->containsFalsey()) {
|
||||
// e.g. `if (($x instanceof Xyz) == true)`
|
||||
return (new ConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
} elseif (!$expr_type->containsTruthy()) {
|
||||
} elseif ($negate ? !$expr_type->containsFalsey() : !$expr_type->containsTruthy()) {
|
||||
// e.g. `if (($x instanceof Xyz) == false)`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,4 +87,10 @@ class HasTypeCondition implements BinaryCondition
|
||||
// TODO: Could analyze get_class($array['field']) === stdClass::class (e.g. with AssignmentVisitor)
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
+24
-9
@@ -10,6 +10,7 @@ use Phan\Analysis\ConditionVisitorInterface;
|
||||
use Phan\Analysis\NegatedConditionVisitor;
|
||||
use Phan\AST\UnionTypeVisitor;
|
||||
use Phan\Language\Context;
|
||||
use Phan\Language\UnionType;
|
||||
|
||||
/**
|
||||
* This represents an identical assertion implementation acting on two sides of a condition (===)
|
||||
@@ -39,19 +40,27 @@ class IdenticalCondition implements BinaryCondition
|
||||
return $visitor->analyzeClassAssertion($object, $expr) ?? $visitor->getContext();
|
||||
}
|
||||
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr): ?Context
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr, bool $negate = false): ?Context
|
||||
{
|
||||
if (!$expr instanceof Node) {
|
||||
// Cannot be false/true.
|
||||
return null;
|
||||
}
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$value = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr)->asSingleScalarValueOrNullOrSelf();
|
||||
if (!\is_bool($value)) {
|
||||
if ($value instanceof UnionType) {
|
||||
return null;
|
||||
}
|
||||
if ($value) {
|
||||
$function_name = ConditionVisitor::getFunctionName($call_node);
|
||||
if (\is_string($function_name) && \strcasecmp($function_name, 'count') === 0) {
|
||||
if (!\is_int($value)) {
|
||||
return null;
|
||||
}
|
||||
if ($negate && $value !== 0) {
|
||||
// Phan currently can't infer anything from `count($x) !== 2`.
|
||||
return null;
|
||||
}
|
||||
} elseif (!\is_bool($value)) {
|
||||
return null;
|
||||
}
|
||||
if ($value xor $negate) { // logical xor
|
||||
// e.g. `if (is_string($x) === true)`
|
||||
return (new ConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
} else {
|
||||
@@ -60,7 +69,7 @@ class IdenticalCondition implements BinaryCondition
|
||||
}
|
||||
}
|
||||
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr): ?Context
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr, bool $negate = false): ?Context
|
||||
{
|
||||
if (!$expr instanceof Node) {
|
||||
return null;
|
||||
@@ -71,7 +80,7 @@ class IdenticalCondition implements BinaryCondition
|
||||
if (!\is_bool($value)) {
|
||||
return null;
|
||||
}
|
||||
if ($value) {
|
||||
if ($value xor $negate) { // logical xor
|
||||
// e.g. `if (is_string($x) === true)`
|
||||
return (new ConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
} else {
|
||||
@@ -79,4 +88,10 @@ class IdenticalCondition implements BinaryCondition
|
||||
return (new NegatedConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
}
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-31
@@ -5,10 +5,7 @@ declare(strict_types=1);
|
||||
namespace Phan\Analysis\ConditionVisitor;
|
||||
|
||||
use ast\Node;
|
||||
use Phan\Analysis\ConditionVisitor;
|
||||
use Phan\Analysis\ConditionVisitorInterface;
|
||||
use Phan\Analysis\NegatedConditionVisitor;
|
||||
use Phan\AST\UnionTypeVisitor;
|
||||
use Phan\Language\Context;
|
||||
|
||||
/**
|
||||
@@ -43,37 +40,17 @@ class NotEqualsCondition implements BinaryCondition
|
||||
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr): ?Context
|
||||
{
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$expr_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr);
|
||||
if (!$expr_type->isExclusivelyBoolTypes() && !UnionTypeVisitor::unionTypeFromNode($code_base, $context, $call_node)->isExclusivelyBoolTypes()) {
|
||||
return null;
|
||||
}
|
||||
if (!$expr_type->containsFalsey()) {
|
||||
// e.g. `if (is_string($x) != true)`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
} elseif (!$expr_type->containsTruthy()) {
|
||||
// e.g. `if (is_string($x) != false)`
|
||||
return (new ConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
}
|
||||
return null;
|
||||
return (new EqualsCondition())->analyzeCall($visitor, $call_node, $expr, true);
|
||||
}
|
||||
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr): ?Context
|
||||
{
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$expr_type = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr);
|
||||
if (!$expr_type->isExclusivelyBoolTypes() && !UnionTypeVisitor::unionTypeFromNode($code_base, $context, $complex_node)->isExclusivelyBoolTypes()) {
|
||||
return null;
|
||||
}
|
||||
if (!$expr_type->containsFalsey()) {
|
||||
// e.g. `if (($x instanceof Xyz) != true)`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
} elseif (!$expr_type->containsTruthy()) {
|
||||
// e.g. `if (($x instanceof Xyz) != false)`
|
||||
return (new ConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
}
|
||||
return null;
|
||||
return (new EqualsCondition())->analyzeComplexCondition($visitor, $complex_node, $expr, true);
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,4 +89,10 @@ class NotHasTypeCondition implements BinaryCondition
|
||||
// TODO: Could analyze get_class($array['field']) === stdClass::class (e.g. with AssignmentVisitor)
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-35
@@ -5,10 +5,7 @@ declare(strict_types=1);
|
||||
namespace Phan\Analysis\ConditionVisitor;
|
||||
|
||||
use ast\Node;
|
||||
use Phan\Analysis\ConditionVisitor;
|
||||
use Phan\Analysis\ConditionVisitorInterface;
|
||||
use Phan\Analysis\NegatedConditionVisitor;
|
||||
use Phan\AST\UnionTypeVisitor;
|
||||
use Phan\Language\Context;
|
||||
|
||||
/**
|
||||
@@ -42,41 +39,17 @@ class NotIdenticalCondition implements BinaryCondition
|
||||
|
||||
public function analyzeCall(ConditionVisitorInterface $visitor, Node $call_node, $expr): ?Context
|
||||
{
|
||||
if (!$expr instanceof Node) {
|
||||
return null;
|
||||
}
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$value = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr)->asSingleScalarValueOrNullOrSelf();
|
||||
if (!\is_bool($value)) {
|
||||
return null;
|
||||
}
|
||||
if ($value) {
|
||||
// e.g. `if (!(is_string($x) === true))`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
} else {
|
||||
// e.g. `if (!(is_string($x) === false))`
|
||||
return (new ConditionVisitor($code_base, $context))->visitCall($call_node);
|
||||
}
|
||||
return (new IdenticalCondition())->analyzeCall($visitor, $call_node, $expr, true);
|
||||
}
|
||||
|
||||
public function analyzeComplexCondition(ConditionVisitorInterface $visitor, Node $complex_node, $expr): ?Context
|
||||
{
|
||||
if (!$expr instanceof Node) {
|
||||
return null;
|
||||
}
|
||||
$code_base = $visitor->getCodeBase();
|
||||
$context = $visitor->getContext();
|
||||
$value = UnionTypeVisitor::unionTypeFromNode($code_base, $context, $expr)->asSingleScalarValueOrNullOrSelf();
|
||||
if (!\is_bool($value)) {
|
||||
return null;
|
||||
}
|
||||
if ($value) {
|
||||
// e.g. `if (($x instanceof Xyz) !== true)`
|
||||
return (new NegatedConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
} else {
|
||||
// e.g. `if (($x instanceof Xyz) !== false)`
|
||||
return (new ConditionVisitor($code_base, $context))->__invoke($complex_node);
|
||||
}
|
||||
return (new IdenticalCondition())->analyzeComplexCondition($visitor, $complex_node, $expr, true);
|
||||
}
|
||||
|
||||
/** @return static */
|
||||
public function withFlippedOperands(): BinaryCondition
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
+26
-1
@@ -30,6 +30,7 @@ use Phan\Language\Element\Variable;
|
||||
use Phan\Language\FQSEN\FullyQualifiedClassName;
|
||||
use Phan\Language\Type;
|
||||
use Phan\Language\Type\ArrayShapeType;
|
||||
use Phan\Language\Type\ArrayType;
|
||||
use Phan\Language\Type\FalseType;
|
||||
use Phan\Language\Type\IntType;
|
||||
use Phan\Language\Type\IterableType;
|
||||
@@ -392,6 +393,24 @@ trait ConditionVisitorUtil
|
||||
);
|
||||
}
|
||||
|
||||
final protected function removeEmptyArrayFromVariable(Node $var_node, Context $context): Context
|
||||
{
|
||||
return $this->updateVariableWithConditionalFilter(
|
||||
$var_node,
|
||||
$context,
|
||||
static function (UnionType $type): bool {
|
||||
return $type->hasArray();
|
||||
},
|
||||
static function (UnionType $type): UnionType {
|
||||
return $type->asMappedUnionType(static function (Type $type): Type {
|
||||
return $type instanceof ArrayType ? $type->asNonFalseyType() : $type;
|
||||
});
|
||||
},
|
||||
true,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type after removing all types that are empty or don't support property or array access
|
||||
* @param 1|2|3|4 $access_type ConditionVisitor::ACCESS_IS_*
|
||||
@@ -1034,6 +1053,8 @@ trait ConditionVisitorUtil
|
||||
return $this->removeTrueFromVariable($var_node, $context);
|
||||
} elseif ($value === null) {
|
||||
return $this->removeNullFromVariable($var_node, $context, false);
|
||||
} elseif ($value === []) {
|
||||
return $this->removeEmptyArrayFromVariable($var_node, $context);
|
||||
}
|
||||
} else {
|
||||
return $this->removeLiteralScalarFromVariable($var_node, $context, $expr, true);
|
||||
@@ -1070,6 +1091,8 @@ trait ConditionVisitorUtil
|
||||
return $this->removeFalseyFromVariable($var_node, $context, false);
|
||||
} elseif ($expr === true) {
|
||||
return $this->removeTrueFromVariable($var_node, $context);
|
||||
} elseif ($expr === []) {
|
||||
return $this->removeEmptyArrayFromVariable($var_node, $context);
|
||||
}
|
||||
}
|
||||
// Remove all of the types which are loosely equal
|
||||
@@ -1149,7 +1172,7 @@ trait ConditionVisitorUtil
|
||||
}
|
||||
}
|
||||
if ($right instanceof Node) {
|
||||
$result = $this->analyzeBinaryConditionSide($right, $left, $condition);
|
||||
$result = $this->analyzeBinaryConditionSide($right, $left, $condition->withFlippedOperands());
|
||||
if ($result !== null) {
|
||||
return $result;
|
||||
}
|
||||
@@ -1398,6 +1421,8 @@ trait ConditionVisitorUtil
|
||||
|
||||
/**
|
||||
* Fetches the function name. Does not check for function uses or namespaces.
|
||||
*
|
||||
* TODO: Check for function uses
|
||||
* @param Node $node a node of kind ast\AST_CALL
|
||||
* @return ?string (null if function name could not be found)
|
||||
*/
|
||||
|
||||
@@ -23,6 +23,7 @@ use Phan\Language\Type;
|
||||
use Phan\Language\Type\ArrayType;
|
||||
use Phan\Language\Type\FloatType;
|
||||
use Phan\Language\Type\GenericArrayType;
|
||||
use Phan\Language\Type\IntersectionType;
|
||||
use Phan\Language\Type\IntType;
|
||||
use Phan\Language\Type\IterableType;
|
||||
use Phan\Language\Type\MixedType;
|
||||
@@ -633,10 +634,12 @@ class NegatedConditionVisitor extends KindVisitorImplementation implements Condi
|
||||
})->asNormalizedTypes());
|
||||
};
|
||||
/** @param list<Node|mixed> $unused_args */
|
||||
$zero_count_callback = static function (CodeBase $unused_code_base, Context $unused_context, Variable $variable, array $unused_args): void {
|
||||
$variable->setUnionType($variable->getUnionType()->asMappedListUnionType(/** @return list<Type> */ static function (Type $type): array {
|
||||
$zero_count_callback = static function (CodeBase $code_base, Context $context, Variable $variable, array $unused_args): void {
|
||||
$variable->setUnionType($variable->getUnionType()->asMappedListUnionType(/** @return list<Type> */ static function (Type $type) use ($code_base, $context): array {
|
||||
if ($type->isPossiblyObject()) {
|
||||
// TODO: Could cast iterable to Traversable|array{}
|
||||
if ($type->isObject()) {
|
||||
return [IntersectionType::createFromTypes([$type, Type::countableInstance()], $code_base, $context)];
|
||||
}
|
||||
return [$type];
|
||||
}
|
||||
if (!$type->isPossiblyFalsey()) {
|
||||
|
||||
+27
-30
@@ -40,7 +40,6 @@ use Phan\Language\Element\Variable;
|
||||
use Phan\Language\FQSEN\FullyQualifiedClassName;
|
||||
use Phan\Language\FQSEN\FullyQualifiedGlobalConstantName;
|
||||
use Phan\Language\Type;
|
||||
use Phan\Language\Type\ArrayType;
|
||||
use Phan\Language\Type\FalseType;
|
||||
use Phan\Language\Type\GenericArrayType;
|
||||
use Phan\Language\Type\IntType;
|
||||
@@ -298,7 +297,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
}
|
||||
return $type;
|
||||
});
|
||||
$variable = clone($variable);
|
||||
$variable = clone $variable;
|
||||
$context->addScopeVariable($variable);
|
||||
$variable->setUnionType($union_type);
|
||||
/*
|
||||
@@ -308,7 +307,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
$union_type = $union_type->withoutType($type)->withType(
|
||||
GenericArrayType::fromElementType($type->genericArrayElementType(), false, $type->getKeyType())
|
||||
);
|
||||
$variable = clone($variable);
|
||||
$variable = clone $variable;
|
||||
$context->addScopeVariable($variable);
|
||||
$variable->setUnionType($union_type);
|
||||
}
|
||||
@@ -509,10 +508,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
);
|
||||
|
||||
if (!$type->hasPrintableScalar()) {
|
||||
if ($type->isType(ArrayType::instance(false))
|
||||
|| $type->isType(ArrayType::instance(true))
|
||||
|| $type->isGenericArray()
|
||||
) {
|
||||
if ($type->isArray()) {
|
||||
$this->emitIssue(
|
||||
Issue::TypeConversionFromArray,
|
||||
$expr_node->lineno,
|
||||
@@ -615,12 +611,15 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
} else {
|
||||
$scope = $this->context->getScope();
|
||||
if (!$scope->hasGlobalVariableWithName($variable_name)) {
|
||||
$this->context->addGlobalScopeVariable(clone $variable);
|
||||
$actual_global_variable = clone $variable;
|
||||
$this->context->addGlobalScopeVariable($actual_global_variable);
|
||||
} else {
|
||||
// TODO: Support @global?
|
||||
$actual_global_variable = $scope->getGlobalVariableByName($variable_name);
|
||||
}
|
||||
// TODO: Support @global?
|
||||
$actual_global_variable = $scope->getGlobalVariableByName($variable_name);
|
||||
$scope_global_variable = $actual_global_variable instanceof GlobalVariable ? clone($actual_global_variable) : new GlobalVariable($actual_global_variable);
|
||||
$scope_global_variable->setUnionType($actual_global_variable->getUnionType()->eraseRealTypeSetRecursively());
|
||||
$scope_global_variable = $actual_global_variable instanceof GlobalVariable ? (clone $actual_global_variable) : new GlobalVariable($actual_global_variable);
|
||||
// Importing an undefined global by reference will make an undefined value a reference to null.
|
||||
$scope_global_variable->setUnionType($actual_global_variable->getUnionType()->eraseRealTypeSetRecursively()->withIsPossiblyUndefined(false));
|
||||
}
|
||||
|
||||
// Note that we're not creating a new scope, just
|
||||
@@ -660,6 +659,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
}
|
||||
|
||||
// NOTE: Phan can't be sure that the type the static type starts with is the same as what it has later. Avoid false positive PhanRedundantCondition.
|
||||
// This should never be undefined with current limits on expressions found in static variables.
|
||||
$variable->setUnionType($default_type->eraseRealTypeSetRecursively());
|
||||
// TODO: Probably not true in a loop?
|
||||
// TODO: Expand this to assigning to variables? (would need to make references invalidate that, and skip this in the global scope)
|
||||
@@ -706,10 +706,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
);
|
||||
|
||||
if (!$type->hasPrintableScalar()) {
|
||||
if ($type->isType(ArrayType::instance(false))
|
||||
|| $type->isType(ArrayType::instance(true))
|
||||
|| $type->isGenericArray()
|
||||
) {
|
||||
if ($type->isArray()) {
|
||||
$this->emitIssue(
|
||||
Issue::TypeConversionFromArray,
|
||||
$expr_node->lineno ?? $node->lineno,
|
||||
@@ -1250,7 +1247,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
} catch (IssueException | NodeException $_) {
|
||||
return $this->context;
|
||||
}
|
||||
$variable = clone($variable);
|
||||
$variable = clone $variable;
|
||||
$variable->setUnionType($new_type);
|
||||
$this->context->addScopeVariable($variable);
|
||||
return $this->context;
|
||||
@@ -1505,10 +1502,9 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
|
||||
if (!$return_type->isEmpty()
|
||||
&& !$func->hasReturn()
|
||||
&& !self::declOnlyThrows($node)
|
||||
&& !$return_type->hasType(VoidType::instance(false))
|
||||
&& !$return_type->hasType(NullType::instance(false))
|
||||
&& !$return_type->hasType(NeverType::instance(false))
|
||||
&& !self::declNeverReturns($node)
|
||||
&& !$return_type->isNull()
|
||||
&& !$return_type->isNeverType()
|
||||
) {
|
||||
$this->warnTypeMissingReturn($func, $node);
|
||||
}
|
||||
@@ -2001,7 +1997,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
RedundantCondition::emitInstance(
|
||||
$expr,
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($expr->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($expr->lineno ?? $node->lineno),
|
||||
Issue::EmptyYieldFrom,
|
||||
[(string)$yield_from_type],
|
||||
Closure::fromCallable([BlockAnalysisVisitor::class, 'isEmptyIterable'])
|
||||
@@ -3029,9 +3025,10 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
&& !$has_interface_class
|
||||
&& !$return_type->isEmpty()
|
||||
&& !$method->hasReturn()
|
||||
&& !self::declOnlyThrows($node)
|
||||
&& !self::declNeverReturns($node)
|
||||
&& !$return_type->hasType(VoidType::instance(false))
|
||||
&& !$return_type->hasType(NullType::instance(false))
|
||||
&& !$return_type->hasType(NeverType::instance(false))
|
||||
) {
|
||||
$this->warnTypeMissingReturn($method, $node);
|
||||
}
|
||||
@@ -3091,7 +3088,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
|
||||
if (!$return_type->isEmpty()
|
||||
&& !$function->hasReturn()
|
||||
&& !self::declOnlyThrows($node)
|
||||
&& !self::declNeverReturns($node)
|
||||
&& !$return_type->hasType(VoidType::instance(false))
|
||||
&& !$return_type->hasType(NullType::instance(false))
|
||||
) {
|
||||
@@ -4204,7 +4201,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
if ($variable) {
|
||||
$set_variable_type = static function (UnionType $new_type) use ($code_base, $context, $variable, $argument): void {
|
||||
if ($variable instanceof Variable) {
|
||||
$variable = clone($variable);
|
||||
$variable = clone $variable;
|
||||
AssignmentVisitor::analyzeSetUnionTypeInContext($code_base, $context, $variable, $new_type, $argument);
|
||||
$context->addScopeVariable($variable);
|
||||
} else {
|
||||
@@ -4349,12 +4346,12 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
}
|
||||
|
||||
$original_method_scope = $method->getInternalScope();
|
||||
$method->setInternalScope(clone($original_method_scope));
|
||||
$method->setInternalScope(clone $original_method_scope);
|
||||
try {
|
||||
// Even though we don't modify the parameter list, we still need to know the types
|
||||
// -- as an optimization, we don't run quick mode again if the types didn't change?
|
||||
$parameter_list = \array_map(static function (Parameter $parameter): Parameter {
|
||||
return clone($parameter);
|
||||
return clone $parameter;
|
||||
}, $method->getParameterList());
|
||||
|
||||
foreach ($parameter_list as $i => $parameter_clone) {
|
||||
@@ -4436,7 +4433,7 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
): void {
|
||||
$method = $this->findDefiningMethod($method);
|
||||
$original_method_scope = $method->getInternalScope();
|
||||
$method->setInternalScope(clone($original_method_scope));
|
||||
$method->setInternalScope(clone $original_method_scope);
|
||||
$method_context = $method->getContext();
|
||||
|
||||
try {
|
||||
@@ -5046,12 +5043,12 @@ class PostOrderAnalysisVisitor extends AnalysisVisitor
|
||||
* @return bool
|
||||
* True when the decl can only throw an exception or return or exit()
|
||||
*/
|
||||
private static function declOnlyThrows(Node $node): bool
|
||||
private static function declNeverReturns(Node $node): bool
|
||||
{
|
||||
// Work around fallback parser generating methods without statements list.
|
||||
// Otherwise, 'stmts' would always be a Node due to preconditions.
|
||||
$stmts_node = $node->children['stmts'];
|
||||
return $stmts_node instanceof Node && BlockExitStatusChecker::willUnconditionallyThrowOrReturn($stmts_node);
|
||||
return $stmts_node instanceof Node && BlockExitStatusChecker::willUnconditionallyNeverReturn($stmts_node);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+11
-4
@@ -1177,7 +1177,7 @@ class BlockAnalysisVisitor extends AnalysisVisitor
|
||||
RedundantCondition::emitInstance(
|
||||
$node->children['expr'],
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($node->children['expr']->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->children['expr']->lineno ?? $node->lineno),
|
||||
Issue::EmptyForeach,
|
||||
[(string)$union_type],
|
||||
Closure::fromCallable([self::class, 'isEmptyIterable'])
|
||||
@@ -1188,7 +1188,7 @@ class BlockAnalysisVisitor extends AnalysisVisitor
|
||||
RedundantCondition::emitInstance(
|
||||
$node->children['expr'],
|
||||
$this->code_base,
|
||||
(clone($this->context))->withLineNumberStart($node->children['expr']->lineno ?? $node->lineno),
|
||||
(clone $this->context)->withLineNumberStart($node->children['expr']->lineno ?? $node->lineno),
|
||||
Issue::EmptyForeachBody,
|
||||
[(string)$union_type],
|
||||
Closure::fromCallable([self::class, 'isDefinitelyNotObject'])
|
||||
@@ -2535,6 +2535,13 @@ class BlockAnalysisVisitor extends AnalysisVisitor
|
||||
// Step into each catch node and get an
|
||||
// updated context for the node
|
||||
$catch_context = $this->analyzeAndGetUpdatedContext($catch_context, $node, $catch_node);
|
||||
$catch_stmts_node = $catch_node->children['stmts'];
|
||||
if ($catch_stmts_node instanceof Node && BlockExitStatusChecker::willUnconditionallySkipRemainingStatements($catch_stmts_node)) {
|
||||
// e.g. "} catch (Exception $e) { break; }"
|
||||
if (!BlockExitStatusChecker::willUnconditionallyThrowOrReturn($catch_stmts_node)) {
|
||||
$this->recordLoopContextForBreakOrContinue($catch_context);
|
||||
}
|
||||
}
|
||||
// NOTE: We let ContextMergeVisitor->mergeCatchContext decide if the block exit status is valid.
|
||||
$catch_context_list[] = $catch_context;
|
||||
}
|
||||
@@ -2891,7 +2898,7 @@ class BlockAnalysisVisitor extends AnalysisVisitor
|
||||
RedundantCondition::emitInstance(
|
||||
$left_node,
|
||||
$this->code_base,
|
||||
(clone($context))->withLineNumberStart($node->lineno),
|
||||
(clone $context)->withLineNumberStart($node->lineno),
|
||||
Issue::CoalescingNeverNull,
|
||||
[
|
||||
ASTReverter::toShortString($left_node),
|
||||
@@ -2907,7 +2914,7 @@ class BlockAnalysisVisitor extends AnalysisVisitor
|
||||
RedundantCondition::emitInstance(
|
||||
$left_node,
|
||||
$this->code_base,
|
||||
(clone($context))->withLineNumberStart($node->lineno),
|
||||
(clone $context)->withLineNumberStart($node->lineno),
|
||||
Issue::CoalescingAlwaysNull,
|
||||
[
|
||||
ASTReverter::toShortString($left_node),
|
||||
|
||||
+1
@@ -214,6 +214,7 @@ if (!extension_loaded('filter') && !function_exists('filter_var')) {
|
||||
/**
|
||||
* Print more of the backtrace than is done by default
|
||||
* @suppress PhanAccessMethodInternal
|
||||
* @return never
|
||||
*/
|
||||
set_exception_handler(static function (Throwable $throwable): void {
|
||||
fwrite(STDERR, "ERROR: $throwable\n");
|
||||
|
||||
Vendored
+37
-29
@@ -52,6 +52,7 @@ use function min;
|
||||
use function phpversion;
|
||||
use function printf;
|
||||
use function shell_exec;
|
||||
use function sprintf;
|
||||
use function str_repeat;
|
||||
use function strcasecmp;
|
||||
use function strlen;
|
||||
@@ -82,7 +83,7 @@ class CLI
|
||||
/**
|
||||
* This should be updated to x.y.z-dev after every release, and x.y.z before a release.
|
||||
*/
|
||||
public const PHAN_VERSION = '5.0.0';
|
||||
public const PHAN_VERSION = '5.2.1';
|
||||
|
||||
/**
|
||||
* List of short flags passed to getopt
|
||||
@@ -518,7 +519,7 @@ class CLI
|
||||
case 'output-mode':
|
||||
if (!is_string($value) || !in_array($value, $factory->getTypes(), true)) {
|
||||
throw new UsageException(
|
||||
\sprintf(
|
||||
sprintf(
|
||||
'Unknown output mode %s. Known values are [%s]',
|
||||
StringUtil::jsonEncode($value),
|
||||
\implode(',', $factory->getTypes())
|
||||
@@ -614,7 +615,7 @@ class CLI
|
||||
case 'o':
|
||||
case 'output':
|
||||
if (!is_string($value)) {
|
||||
throw new UsageException(\sprintf("Invalid arguments to --output: args=%s\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Invalid arguments to --output: args=%s\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
}
|
||||
$output_file = \fopen($value, 'w');
|
||||
if (!$output_file) {
|
||||
@@ -646,7 +647,7 @@ class CLI
|
||||
case 'processes':
|
||||
$processes = \filter_var($value, FILTER_VALIDATE_INT);
|
||||
if ($processes <= 0) {
|
||||
throw new UsageException(\sprintf("Invalid arguments to --processes: %s (expected a positive integer)\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Invalid arguments to --processes: %s (expected a positive integer)\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
}
|
||||
Config::setValue('processes', $processes);
|
||||
break;
|
||||
@@ -690,7 +691,7 @@ class CLI
|
||||
break;
|
||||
case 'native-syntax-check':
|
||||
if ($value === '') {
|
||||
throw new UsageException(\sprintf("Invalid arguments to --native-syntax-check: args=%s\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Invalid arguments to --native-syntax-check: args=%s\n", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
}
|
||||
if (!is_array($value)) {
|
||||
$value = [$value];
|
||||
@@ -741,11 +742,11 @@ class CLI
|
||||
case 'daemonize-socket':
|
||||
self::checkCanDaemonize('unix', $key);
|
||||
if (!is_string($value)) {
|
||||
throw new UsageException(\sprintf("Invalid arguments to --daemonize-socket: args=%s", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Invalid arguments to --daemonize-socket: args=%s", StringUtil::jsonEncode($value)), EXIT_FAILURE);
|
||||
}
|
||||
$socket_dirname = \realpath(\dirname($value));
|
||||
if (!is_string($socket_dirname) || !\file_exists($socket_dirname) || !\is_dir($socket_dirname)) {
|
||||
$msg = \sprintf(
|
||||
$msg = sprintf(
|
||||
'Requested to create Unix socket server in %s, but folder %s does not exist',
|
||||
StringUtil::jsonEncode($value),
|
||||
StringUtil::jsonEncode($socket_dirname)
|
||||
@@ -1010,7 +1011,7 @@ class CLI
|
||||
$resolved_binaries = [];
|
||||
foreach ($binaries as $binary) {
|
||||
if ($binary === '') {
|
||||
throw new UsageException(\sprintf("Invalid arguments to --native-syntax-check: args=%s\n", StringUtil::jsonEncode($binaries)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Invalid arguments to --native-syntax-check: args=%s\n", StringUtil::jsonEncode($binaries)), EXIT_FAILURE);
|
||||
}
|
||||
if (DIRECTORY_SEPARATOR === '\\') {
|
||||
$cmd = 'where ' . escapeshellarg($binary);
|
||||
@@ -1019,10 +1020,10 @@ class CLI
|
||||
}
|
||||
$resolved = trim((string) shell_exec($cmd));
|
||||
if ($resolved === '') {
|
||||
throw new UsageException(\sprintf("Could not find PHP binary for --native-syntax-check: arg=%s\n", StringUtil::jsonEncode($binary)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("Could not find PHP binary for --native-syntax-check: arg=%s\n", StringUtil::jsonEncode($binary)), EXIT_FAILURE);
|
||||
}
|
||||
if (!is_executable($resolved)) {
|
||||
throw new UsageException(\sprintf("PHP binary for --native-syntax-check is not executable: arg=%s\n", StringUtil::jsonEncode($binary)), EXIT_FAILURE);
|
||||
throw new UsageException(sprintf("PHP binary for --native-syntax-check is not executable: arg=%s\n", StringUtil::jsonEncode($binary)), EXIT_FAILURE);
|
||||
}
|
||||
$resolved_binaries[] = $resolved;
|
||||
}
|
||||
@@ -1124,7 +1125,7 @@ class CLI
|
||||
}
|
||||
if ($valid_files === 0) {
|
||||
// TODO convert this to an error in Phan 5.
|
||||
$error_message = \sprintf(
|
||||
$error_message = sprintf(
|
||||
"None of the files to analyze in %s exist - This will be an error in future Phan releases." . PHP_EOL,
|
||||
Config::getProjectRootDirectory()
|
||||
);
|
||||
@@ -1223,7 +1224,7 @@ class CLI
|
||||
$details = ' (Referenced as ' . StringUtil::jsonEncode($plugin_path_or_name) . ')';
|
||||
$details .= self::getPluginSuggestionText($plugin_path_or_name);
|
||||
}
|
||||
self::printErrorToStderr(\sprintf(
|
||||
self::printErrorToStderr(sprintf(
|
||||
"Phan %s could not find plugin %s%s\n",
|
||||
CLI::PHAN_VERSION,
|
||||
StringUtil::jsonEncode($plugin_file_name),
|
||||
@@ -1531,13 +1532,13 @@ $init_help
|
||||
-b, --backward-compatibility-checks
|
||||
Check for potential PHP 5 -> PHP 7 BC issues
|
||||
|
||||
--target-php-version {7.0,7.1,7.2,7.3,7.4,8.0,native}
|
||||
--target-php-version {5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1,native}
|
||||
The PHP version that the codebase will be checked for compatibility against.
|
||||
For best results, the PHP binary used to run Phan should have the same PHP version.
|
||||
(Phan relies on Reflection for some param counts
|
||||
and checks for undefined classes/methods/functions)
|
||||
|
||||
--minimum-target-php-version {7.0,7.1,7.2,7.3,7.4,8.0,native}
|
||||
--minimum-target-php-version {5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1,native}
|
||||
The PHP version that will be used for feature/syntax compatibility warnings.
|
||||
|
||||
-i, --ignore-undeclared
|
||||
@@ -1945,7 +1946,7 @@ EOB
|
||||
*/
|
||||
public static function colorizeHelpSectionIfSupported(string $section): string
|
||||
{
|
||||
if (Config::getValue('color_issue_messages') ?? (!self::hasNoColorEnv() && self::supportsColor(\STDOUT))) {
|
||||
if (Config::getValue('color_issue_messages') ?? (!self::hasNoColorEnv() && \defined('STDOUT') && self::supportsColor(\STDOUT))) {
|
||||
$section = self::colorizeHelpSection($section);
|
||||
}
|
||||
return $section;
|
||||
@@ -2138,7 +2139,7 @@ EOB
|
||||
}
|
||||
if (!$file_info->isReadable()) {
|
||||
$file_path = $file_info->getRealPath();
|
||||
CLI::printErrorToStderr("Unable to read file $file_path: SplFileInfo->isReadable() is false, getPerms()=" . \sprintf("%o(octal)", @$file_info->getPerms()) . "\n");
|
||||
CLI::printErrorToStderr("Unable to read file $file_path: SplFileInfo->isReadable() is false, getPerms()=" . sprintf("%o(octal)", @$file_info->getPerms()) . "\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2148,7 +2149,7 @@ EOB
|
||||
return false;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
CLI::printErrorToStderr(\sprintf("Unexpected error checking if %s should be parsed: %s %s\n", $file_info->getPathname(), \get_class($e), $e->getMessage()));
|
||||
CLI::printErrorToStderr(sprintf("Unexpected error checking if %s should be parsed: %s %s\n", $file_info->getPathname(), \get_class($e), $e->getMessage()));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2357,15 +2358,15 @@ EOB
|
||||
$columns = self::getColumns();
|
||||
$left_side = \str_pad($msg, 10, ' ', STR_PAD_LEFT) . ' ';
|
||||
if ($columns - (60 + 10) > 19) {
|
||||
$percent_progress = \sprintf('%1$ 5.1f', (int)(1000 * $p) / 10);
|
||||
$percent_progress = sprintf('%1$ 5.1f', (int)(1000 * $p) / 10);
|
||||
} else {
|
||||
$percent_progress = \sprintf("%1$ 3d", (int)(100 * $p));
|
||||
$percent_progress = sprintf("%1$ 3d", (int)(100 * $p));
|
||||
}
|
||||
// Don't make the current memory usage in the progress bar shorter (avoid showing "MBB")
|
||||
$width = \max(2, strlen((string)(int)$peak));
|
||||
$right_side =
|
||||
" " . $percent_progress . "%" .
|
||||
\sprintf(' %' . $width . 'dMB/%' . $width . 'dMB', (int)$memory, (int)$peak);
|
||||
sprintf(' %' . $width . 'dMB/%' . $width . 'dMB', (int)$memory, (int)$peak);
|
||||
// @phan-suppress-previous-line PhanPluginPrintfVariableFormatString
|
||||
|
||||
// strlen(" 99% 999MB/999MB") == 17
|
||||
@@ -2415,7 +2416,7 @@ EOB
|
||||
*/
|
||||
public static function debugProgress(string $msg, float $p, $details): void
|
||||
{
|
||||
$pct = \sprintf("%d%%", (int)(100 * self::boundPercentage($p)));
|
||||
$pct = sprintf("%d%%", (int)(100 * self::boundPercentage($p)));
|
||||
|
||||
if ($details === null) {
|
||||
return;
|
||||
@@ -2578,7 +2579,7 @@ EOB
|
||||
$buf .= str_repeat(" ", self::PROGRESS_WIDTH - $mod);
|
||||
}
|
||||
// @phan-suppress-next-line PhanPluginPrintfVariableFormatString
|
||||
$buf .= " " . \sprintf(
|
||||
$buf .= " " . sprintf(
|
||||
"%" . strlen((string)(int)$count) . "d / %d (%3d%%) %.0fMB" . PHP_EOL,
|
||||
min(self::$current_progress_offset_long_progress, $count),
|
||||
(int)$count,
|
||||
@@ -2593,7 +2594,7 @@ EOB
|
||||
$buf .= self::colorizeProgressBarSegment(str_repeat($chr, $offset - self::$current_progress_offset_long_progress));
|
||||
self::$current_progress_offset_long_progress = $offset;
|
||||
if (self::$current_progress_offset_long_progress === self::PROGRESS_WIDTH) {
|
||||
$buf .= ' ' . \sprintf("%.0fMB" . PHP_EOL, $memory);
|
||||
$buf .= ' ' . sprintf("%.0fMB" . PHP_EOL, $memory);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2650,7 +2651,7 @@ EOB
|
||||
if ($config_file_name !== false) {
|
||||
throw new UsageException("Could not find a config file at '$config_file_name', but --require-config-exists was set", EXIT_FAILURE, UsageException::PRINT_EXTENDED);
|
||||
} else {
|
||||
$msg = \sprintf(
|
||||
$msg = sprintf(
|
||||
"Could not figure out the path for config file %s, but --require-config-exists was set",
|
||||
StringUtil::encodeValue($this->config_file)
|
||||
);
|
||||
@@ -2739,20 +2740,27 @@ EOB
|
||||
if (\version_compare($ast_version, '1.0.0') <= 0) {
|
||||
if ($ast_version === '') {
|
||||
// Seen in php 7.3 with file_cache when ast is initially enabled but later disabled, due to the result of extension_loaded being assumed to be a constant by opcache.
|
||||
fwrite(STDERR, "ERROR: extension_loaded('ast') is true, but phpversion('ast') is the empty string. You probably need to clear opcache (opcache.file_cache='" . \ini_get('opcache.file_cache') . "')" . PHP_EOL);
|
||||
CLI::printErrorToStderr("ERROR: extension_loaded('ast') is true, but phpversion('ast') is the empty string. You probably need to clear opcache (opcache.file_cache='" . \ini_get('opcache.file_cache') . "')" . PHP_EOL);
|
||||
}
|
||||
// NOTE: We haven't loaded the autoloader yet, so these issue messages can't be colorized.
|
||||
\fprintf(
|
||||
STDERR,
|
||||
"ERROR: Phan 5.x requires php-ast %s+ because it depends on AST version 85. php-ast '%s' is installed." . PHP_EOL,
|
||||
CLI::printErrorToStderr(sprintf(
|
||||
"Phan 5.x requires php-ast %s+ because it depends on AST version 85. php-ast '%s' is installed." . PHP_EOL,
|
||||
Config::MINIMUM_AST_EXTENSION_VERSION,
|
||||
$ast_version
|
||||
);
|
||||
));
|
||||
require_once __DIR__ . '/Bootstrap.php';
|
||||
\phan_output_ast_installation_instructions();
|
||||
\fwrite(STDERR, "Exiting without analyzing files." . PHP_EOL);
|
||||
exit(1);
|
||||
}
|
||||
if (\version_compare($ast_version, '1.0.11') < 0) {
|
||||
CLI::printWarningToStderr(sprintf("php-ast %s is being used with Phan 5. php-ast 1.0.11 or newer is recommended for compatibility with plugins and support for AST version 85.\n", $ast_version));
|
||||
// Reuse PHAN_SUPPRESS_AST_DEPRECATION for this purpose as well.
|
||||
if (!getenv('PHAN_SUPPRESS_AST_DEPRECATION')) {
|
||||
\phan_output_ast_installation_instructions();
|
||||
fwrite(STDERR, "(Set PHAN_SUPPRESS_AST_DEPRECATION=1 to suppress this message)" . PHP_EOL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Vendored
+7
-3
@@ -22,6 +22,10 @@ use const PHP_EOL;
|
||||
use const PHP_VERSION;
|
||||
use const STDERR;
|
||||
|
||||
/** @internal hack to use dynamic configuration in class constant */
|
||||
|
||||
\define('Phan\AST_VERSION', \version_compare(\phpversion('ast') ?: '1.0.14', '1.0.11') >= 0 || \PHP_VERSION_ID >= 80100 ? 85 : 80);
|
||||
|
||||
/**
|
||||
* Program configuration.
|
||||
*
|
||||
@@ -41,12 +45,12 @@ class Config
|
||||
* The version of the AST (defined in php-ast) that we're using.
|
||||
* @see https://github.com/nikic/php-ast#ast-versioning
|
||||
*/
|
||||
public const AST_VERSION = 85;
|
||||
public const AST_VERSION = namespace\AST_VERSION;
|
||||
|
||||
/**
|
||||
* The minimum AST extension version in the oldest php version supported by Phan.
|
||||
*/
|
||||
public const MINIMUM_AST_EXTENSION_VERSION = '1.0.11';
|
||||
public const MINIMUM_AST_EXTENSION_VERSION = namespace\AST_VERSION === 85 ? '1.0.11' : '1.0.7';
|
||||
|
||||
/**
|
||||
* The version of the Phan plugin system.
|
||||
@@ -57,7 +61,7 @@ class Config
|
||||
* New features increment minor versions, and bug fixes increment patch versions.
|
||||
* @suppress PhanUnreferencedPublicClassConstant
|
||||
*/
|
||||
public const PHAN_PLUGIN_VERSION = '3.4.0';
|
||||
public const PHAN_PLUGIN_VERSION = '3.5.0';
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
|
||||
+1
-1
@@ -170,7 +170,7 @@ class Request
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void (unreachable)
|
||||
* @return never
|
||||
* @throws ExitException to imitate an exit without actually exiting
|
||||
*/
|
||||
public function exit(int $exit_code): void
|
||||
|
||||
Vendored
+10
-1
@@ -650,6 +650,7 @@ class Issue
|
||||
public const CommentDuplicateMagicMethod = 'PhanCommentDuplicateMagicMethod';
|
||||
public const CommentDuplicateMagicProperty = 'PhanCommentDuplicateMagicProperty';
|
||||
public const CommentObjectInClassConstantType = 'PhanCommentObjectInClassConstantType';
|
||||
public const CommentUnsupportedUnionType = 'PhanCommentUnsupportedUnionType';
|
||||
// phpcs:enable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
|
||||
// end of issue name constants
|
||||
|
||||
@@ -2082,7 +2083,7 @@ class Issue
|
||||
new Issue(
|
||||
self::TypeNonVarPassByRef,
|
||||
self::CATEGORY_TYPE,
|
||||
self::SEVERITY_NORMAL,
|
||||
self::SEVERITY_CRITICAL,
|
||||
"Only variables can be passed by reference at argument {INDEX} of {FUNCTIONLIKE}",
|
||||
self::REMEDIATION_B,
|
||||
10018
|
||||
@@ -5586,6 +5587,14 @@ class Issue
|
||||
self::REMEDIATION_B,
|
||||
16021
|
||||
),
|
||||
new Issue(
|
||||
self::CommentUnsupportedUnionType,
|
||||
self::CATEGORY_COMMENT,
|
||||
self::SEVERITY_LOW,
|
||||
"Saw a union type {TYPE} with more than 1 type in a location that does not support union types",
|
||||
self::REMEDIATION_B,
|
||||
16027
|
||||
),
|
||||
];
|
||||
// phpcs:enable Generic.Files.LineLength
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ class AnnotatedUnionType extends UnionType
|
||||
{
|
||||
$result = parent::__toString();
|
||||
if ($this->is_possibly_undefined) {
|
||||
return $result . '=';
|
||||
return ($result !== '' ? $result : 'mixed') . '=';
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ class ClassConstant extends ClassElement implements ConstantInterface
|
||||
// show public class constants as 'const', not 'public const'.
|
||||
// Also, PHP modules probably won't have private/protected constants.
|
||||
$string .= 'const ' . $this->name . ' = ';
|
||||
$fqsen = $this->getFQSEN()->__toString();
|
||||
$fqsen = $this->fqsen->__toString();
|
||||
if (\defined($fqsen)) {
|
||||
// TODO: Could start using $this->getNodeForValue()?
|
||||
// NOTE: This is used by tool/make_stubs, which is why it uses reflection instead of getting a node.
|
||||
|
||||
+68
-60
@@ -14,8 +14,8 @@ use Phan\Analysis\ClassInheritanceAnalyzer;
|
||||
use Phan\Analysis\CompositionAnalyzer;
|
||||
use Phan\Analysis\DuplicateClassAnalyzer;
|
||||
use Phan\Analysis\ParentConstructorCalledAnalyzer;
|
||||
use Phan\Analysis\PropertyTypesAnalyzer;
|
||||
use Phan\Analysis\PostOrderAnalysisVisitor;
|
||||
use Phan\Analysis\PropertyTypesAnalyzer;
|
||||
use Phan\AST\ASTReverter;
|
||||
use Phan\AST\UnionTypeVisitor;
|
||||
use Phan\CodeBase;
|
||||
@@ -71,6 +71,7 @@ use function strtolower;
|
||||
*
|
||||
* @phan-file-suppress PhanPluginDescriptionlessCommentOnPublicMethod
|
||||
* @phan-file-suppress PhanPluginNoCommentOnPublicMethod TODO: Add comments
|
||||
* @property FullyQualifiedClassName $fqsen
|
||||
*/
|
||||
class Clazz extends AddressableElement
|
||||
{
|
||||
@@ -807,7 +808,7 @@ class Clazz extends AddressableElement
|
||||
}
|
||||
|
||||
$property_fqsen = FullyQualifiedPropertyName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$property_name
|
||||
);
|
||||
|
||||
@@ -817,7 +818,7 @@ class Clazz extends AddressableElement
|
||||
$property = clone($property);
|
||||
$property->setFQSEN($property_fqsen);
|
||||
if ($property->hasStaticInUnionType()) {
|
||||
$property->inheritStaticUnionType($original_property_fqsen->getFullyQualifiedClassName(), $this->getFQSEN());
|
||||
$property->inheritStaticUnionType($original_property_fqsen->getFullyQualifiedClassName(), $this->fqsen);
|
||||
}
|
||||
|
||||
// Private properties of traits are accessible from the class that used that trait
|
||||
@@ -918,7 +919,7 @@ class Clazz extends AddressableElement
|
||||
if (count($magic_property_map) === 0) {
|
||||
return true; // Vacuously true.
|
||||
}
|
||||
$class_fqsen = $this->getFQSEN();
|
||||
$class_fqsen = $this->fqsen;
|
||||
$context = $this->internal_context;
|
||||
foreach ($magic_property_map as $comment_parameter) {
|
||||
// $phan_flags can be used to indicate if something is property-read or property-write
|
||||
@@ -931,7 +932,7 @@ class Clazz extends AddressableElement
|
||||
$original_union_type = $comment_parameter->getUnionType();
|
||||
$union_type = $original_union_type->withStaticResolvedInContext($context);
|
||||
$property = new Property(
|
||||
(clone($context))->withLineNumberStart($comment_parameter->getLine()),
|
||||
(clone $context)->withLineNumberStart($comment_parameter->getLine()),
|
||||
$property_name,
|
||||
$union_type,
|
||||
0,
|
||||
@@ -961,7 +962,7 @@ class Clazz extends AddressableElement
|
||||
if (count($magic_method_map) === 0) {
|
||||
return true; // Vacuously true.
|
||||
}
|
||||
$class_fqsen = $this->getFQSEN();
|
||||
$class_fqsen = $this->fqsen;
|
||||
$context = $this->internal_context;
|
||||
$is_pure = $this->isPure();
|
||||
foreach ($magic_method_map as $comment_method) {
|
||||
@@ -980,7 +981,7 @@ class Clazz extends AddressableElement
|
||||
$class_fqsen,
|
||||
$method_name
|
||||
);
|
||||
$method_context = (clone($context))->withLineNumberStart($comment_method->getLine());
|
||||
$method_context = (clone $context)->withLineNumberStart($comment_method->getLine());
|
||||
$real_parameter_list = \array_map(static function (\Phan\Language\Element\Comment\Parameter $parameter) use ($method_context): Parameter {
|
||||
return $parameter->asRealParameter($method_context);
|
||||
}, $comment_method->getParameterList());
|
||||
@@ -1012,7 +1013,7 @@ class Clazz extends AddressableElement
|
||||
): bool {
|
||||
return $code_base->hasPropertyWithFQSEN(
|
||||
FullyQualifiedPropertyName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
)
|
||||
);
|
||||
@@ -1028,7 +1029,7 @@ class Clazz extends AddressableElement
|
||||
): Property {
|
||||
return $code_base->getPropertyByFQSEN(
|
||||
FullyQualifiedPropertyName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
)
|
||||
);
|
||||
@@ -1066,7 +1067,7 @@ class Clazz extends AddressableElement
|
||||
|
||||
// Get the FQSEN of the property we're looking for
|
||||
$property_fqsen = FullyQualifiedPropertyName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
);
|
||||
|
||||
@@ -1233,7 +1234,7 @@ class Clazz extends AddressableElement
|
||||
Issue::fromType(Issue::UndeclaredProperty)(
|
||||
$context->getFile(),
|
||||
$context->getLineNumberStart(),
|
||||
[$this->getFQSEN() . ($is_static ? '::$' : '->') . $name],
|
||||
[$this->fqsen . ($is_static ? '::$' : '->') . $name],
|
||||
IssueFixSuggester::suggestSimilarProperty($code_base, $context, $this, $name, $is_static)
|
||||
)
|
||||
);
|
||||
@@ -1461,7 +1462,7 @@ class Clazz extends AddressableElement
|
||||
public function getPropertyMap(CodeBase $code_base): array
|
||||
{
|
||||
return $code_base->getPropertyMapByFullyQualifiedClassName(
|
||||
$this->getFQSEN()
|
||||
$this->fqsen
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1473,7 +1474,7 @@ class Clazz extends AddressableElement
|
||||
ClassConstant $constant
|
||||
): void {
|
||||
$constant_fqsen = FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$constant->getName()
|
||||
);
|
||||
|
||||
@@ -1498,7 +1499,7 @@ class Clazz extends AddressableElement
|
||||
$this->getContext(),
|
||||
Issue::CommentAbstractOnInheritedConstant,
|
||||
$this->getContext()->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$constant->getRealDefiningFQSEN(),
|
||||
$constant->getContext()->getFile(),
|
||||
$constant->getContext()->getLineNumberStart(),
|
||||
@@ -1604,7 +1605,7 @@ class Clazz extends AddressableElement
|
||||
$enum_case->setEnumCaseValue($value);
|
||||
$old_name = $this->enum_case_map[$value] ?? null;
|
||||
if (is_string($old_name)) {
|
||||
$old_enum_case_fqsen = FullyQualifiedClassConstantName::make($this->getFQSEN(), $old_name);
|
||||
$old_enum_case_fqsen = FullyQualifiedClassConstantName::make($this->fqsen, $old_name);
|
||||
$old_enum_case = $code_base->getClassConstantByFQSEN($old_enum_case_fqsen);
|
||||
Issue::maybeEmit(
|
||||
$code_base,
|
||||
@@ -1650,7 +1651,7 @@ class Clazz extends AddressableElement
|
||||
ClassConstant $constant
|
||||
): void {
|
||||
$constant_fqsen = FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$constant->getName()
|
||||
);
|
||||
|
||||
@@ -1675,7 +1676,7 @@ class Clazz extends AddressableElement
|
||||
): bool {
|
||||
if ($code_base->hasClassConstantWithFQSEN(
|
||||
FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
)
|
||||
)) {
|
||||
@@ -1686,7 +1687,7 @@ class Clazz extends AddressableElement
|
||||
}
|
||||
return $code_base->hasClassConstantWithFQSEN(
|
||||
FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
)
|
||||
);
|
||||
@@ -1718,7 +1719,7 @@ class Clazz extends AddressableElement
|
||||
): ClassConstant {
|
||||
|
||||
$constant_fqsen = FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
);
|
||||
|
||||
@@ -1728,7 +1729,7 @@ class Clazz extends AddressableElement
|
||||
$context->getFile(),
|
||||
$context->getLineNumberStart(),
|
||||
[
|
||||
$this->getFQSEN() . '::' . $constant_fqsen
|
||||
$this->fqsen . '::' . $constant_fqsen
|
||||
],
|
||||
IssueFixSuggester::suggestSimilarClassConstant($code_base, $context, $constant_fqsen)
|
||||
)
|
||||
@@ -1787,7 +1788,7 @@ class Clazz extends AddressableElement
|
||||
public function getConstantMap(CodeBase $code_base): array
|
||||
{
|
||||
return $code_base->getClassConstantMapByFullyQualifiedClassName(
|
||||
$this->getFQSEN()
|
||||
$this->fqsen
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1810,7 +1811,7 @@ class Clazz extends AddressableElement
|
||||
Option $type_option
|
||||
): void {
|
||||
$method_fqsen = FullyQualifiedMethodName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$method->getName(),
|
||||
$method->getFQSEN()->getAlternateId()
|
||||
);
|
||||
@@ -1824,6 +1825,9 @@ class Clazz extends AddressableElement
|
||||
// TODO: Consider all permutations of abstract and real methods on classes, interfaces, and traits.
|
||||
$existing_method =
|
||||
$code_base->getMethodByFQSEN($method_fqsen);
|
||||
if ($existing_method->getRealDefiningFQSEN() === $method->getRealDefiningFQSEN()) {
|
||||
return;
|
||||
}
|
||||
$existing_method_defining_fqsen = $existing_method->getDefiningFQSEN();
|
||||
// Note: For private/protected methods, the defining FQSEN is set to the FQSEN of the inheriting class.
|
||||
// So, when multiple traits are inherited, they may have identical defining FQSENs, but some may be abstract, and others may be implemented.
|
||||
@@ -1831,26 +1835,21 @@ class Clazz extends AddressableElement
|
||||
if ($method->isAbstract() === $existing_method->isAbstract()) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
self::markMethodAsOverridden($code_base, $existing_method_defining_fqsen);
|
||||
}
|
||||
|
||||
if ($existing_method->getRealDefiningFQSEN() === $method->getRealDefiningFQSEN()) {
|
||||
return;
|
||||
}
|
||||
if ($existing_method->getRealDefiningFQSEN() === $method_fqsen || $method->isAbstract() || !$existing_method->isAbstract() || $existing_method->isNewConstructor()) {
|
||||
// TODO: What if both of these are abstract, and those get combined into an abstract class?
|
||||
// Should phan check compatibility of the abstract methods it inherits?
|
||||
$existing_method->setIsOverride(true);
|
||||
// TODO: What happens for protected methods and traits with getDefiningFQSEN
|
||||
self::markMethodAsOverridden($code_base, $method->getDefiningFQSEN());
|
||||
self::markMethodAsOverridden($code_base, $method->getDefiningFQSEN(), $method_fqsen);
|
||||
|
||||
// Don't add the method since it was already added
|
||||
return;
|
||||
} elseif ($method->getRealDefiningFQSEN() === $method_fqsen) {
|
||||
$method->setIsOverride(true);
|
||||
// TODO: What happens for traits with getDefiningFQSEN
|
||||
self::markMethodAsOverridden($code_base, $existing_method->getDefiningFQSEN());
|
||||
self::markMethodAsOverridden($code_base, $existing_method->getDefiningFQSEN(), $method_fqsen);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1944,7 +1943,7 @@ class Clazz extends AddressableElement
|
||||
}
|
||||
|
||||
$method_fqsen = FullyQualifiedMethodName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
);
|
||||
|
||||
@@ -1968,7 +1967,7 @@ class Clazz extends AddressableElement
|
||||
string $name
|
||||
): Method {
|
||||
$method_fqsen = FullyQualifiedMethodName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$name
|
||||
);
|
||||
|
||||
@@ -1989,7 +1988,7 @@ class Clazz extends AddressableElement
|
||||
|
||||
throw new CodeBaseException(
|
||||
$method_fqsen,
|
||||
"Method with name $name does not exist for class {$this->getFQSEN()}."
|
||||
"Method with name $name does not exist for class {$this->fqsen}."
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2003,7 +2002,7 @@ class Clazz extends AddressableElement
|
||||
public function getMethodMap(CodeBase $code_base): array
|
||||
{
|
||||
return $code_base->getMethodMapByFullyQualifiedClassName(
|
||||
$this->getFQSEN()
|
||||
$this->fqsen
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2381,7 +2380,7 @@ class Clazz extends AddressableElement
|
||||
if ($this->isEnum()) {
|
||||
return true;
|
||||
}
|
||||
return array_key_exists(strtolower($this->getFQSEN()->__toString()), self::IMMUTABLE_CLASS_SET);
|
||||
return array_key_exists(strtolower($this->fqsen->__toString()), self::IMMUTABLE_CLASS_SET);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2669,7 +2668,7 @@ class Clazz extends AddressableElement
|
||||
// Treat it as if all of the properties were added, with their real and phpdoc union types.
|
||||
// TODO: Finalize behavior for edge cases such as `static` and templates in union types
|
||||
$new_property = clone($property);
|
||||
$new_property->setFQSEN(FullyQualifiedPropertyName::make($this->getFQSEN(), $name));
|
||||
$new_property->setFQSEN(FullyQualifiedPropertyName::make($this->fqsen, $name));
|
||||
$new_property->setPhanFlags($new_property->getPhanFlags() | Flags::IS_FROM_PHPDOC);
|
||||
$this->addProperty($code_base, $new_property, None::instance());
|
||||
}
|
||||
@@ -2692,7 +2691,7 @@ class Clazz extends AddressableElement
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->getParentClassFQSEN() === $this->getFQSEN()) {
|
||||
if ($this->getParentClassFQSEN() === $this->fqsen) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2728,7 +2727,7 @@ class Clazz extends AddressableElement
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->getParentClassFQSEN() === $this->getFQSEN()) {
|
||||
if ($this->getParentClassFQSEN() === $this->fqsen) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2930,7 +2929,7 @@ class Clazz extends AddressableElement
|
||||
$this->getContext(),
|
||||
Issue::CommentAbstractOnInheritedProperty,
|
||||
$this->getContext()->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$property->getRealDefiningFQSEN(),
|
||||
$property->getContext()->getFile(),
|
||||
$property->getContext()->getLineNumberStart(),
|
||||
@@ -2998,7 +2997,7 @@ class Clazz extends AddressableElement
|
||||
$old_type = $parameter->getNonVariadicUnionType();
|
||||
$type = $old_type->withSelfResolvedInContext($context);
|
||||
if ($type->hasStaticType()) {
|
||||
$type = $type->withType($this->getFQSEN()->asType());
|
||||
$type = $type->withType($this->fqsen->asType());
|
||||
}
|
||||
if ($old_type !== $type) {
|
||||
$changed = true;
|
||||
@@ -3017,7 +3016,7 @@ class Clazz extends AddressableElement
|
||||
$old_type = $parameter->getNonVariadicUnionType();
|
||||
$type = $old_type->withSelfResolvedInContext($context);
|
||||
if ($type->hasStaticType()) {
|
||||
$type = $type->withType($this->getFQSEN()->asType());
|
||||
$type = $type->withType($this->fqsen->asType());
|
||||
}
|
||||
if ($old_type !== $type) {
|
||||
$changed = true;
|
||||
@@ -3061,7 +3060,7 @@ class Clazz extends AddressableElement
|
||||
$this->getContext(),
|
||||
Issue::UndeclaredAliasedMethodOfTrait,
|
||||
$original_trait_alias_source->getAliasLineno(), // TODO: Track line number in TraitAdaptation
|
||||
\sprintf('%s::%s', (string)$this->getFQSEN(), $alias_method_name),
|
||||
\sprintf('%s::%s', (string)$this->fqsen, $alias_method_name),
|
||||
\sprintf('%s::%s', (string)$class->getFQSEN(), $source_method_name),
|
||||
$class->getName()
|
||||
);
|
||||
@@ -3100,7 +3099,7 @@ class Clazz extends AddressableElement
|
||||
$this->getContext(),
|
||||
$issue_type,
|
||||
$this->getContext()->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$inherited_class->__toString(),
|
||||
$first_context->getFile(),
|
||||
$first_context->getLineNumberStart(),
|
||||
@@ -3192,7 +3191,7 @@ class Clazz extends AddressableElement
|
||||
$string .= 'Class ';
|
||||
}
|
||||
|
||||
$string .= (string)$this->getFQSEN()->getCanonicalFQSEN();
|
||||
$string .= (string)$this->fqsen->getCanonicalFQSEN();
|
||||
|
||||
return $string;
|
||||
}
|
||||
@@ -3220,7 +3219,7 @@ class Clazz extends AddressableElement
|
||||
$string .= 'class ';
|
||||
}
|
||||
|
||||
$string .= $this->getFQSEN()->getName();
|
||||
$string .= $this->fqsen->getName();
|
||||
|
||||
$extend_types = [];
|
||||
$implements_types = [];
|
||||
@@ -3253,7 +3252,7 @@ class Clazz extends AddressableElement
|
||||
|
||||
public function getMarkupDescription(): string
|
||||
{
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
$string = '';
|
||||
$namespace = \ltrim($fqsen->getNamespace(), '\\');
|
||||
if ($namespace !== '') {
|
||||
@@ -3327,7 +3326,7 @@ class Clazz extends AddressableElement
|
||||
return $property->toStub();
|
||||
}, $property_map));
|
||||
}
|
||||
$reflection_class = new \ReflectionClass((string)$this->getFQSEN());
|
||||
$reflection_class = new \ReflectionClass((string)$this->fqsen);
|
||||
$method_map = \array_filter($this->getMethodMap($code_base), static function (Method $method) use ($reflection_class): bool {
|
||||
if ($method->getFQSEN()->isAlternate()) {
|
||||
return false;
|
||||
@@ -3345,7 +3344,7 @@ class Clazz extends AddressableElement
|
||||
}
|
||||
|
||||
$stub .= "\n}\n\n";
|
||||
$namespace = \ltrim($this->getFQSEN()->getNamespace(), '\\');
|
||||
$namespace = \ltrim($this->fqsen->getNamespace(), '\\');
|
||||
return [$namespace, $stub];
|
||||
}
|
||||
|
||||
@@ -3360,7 +3359,7 @@ class Clazz extends AddressableElement
|
||||
}
|
||||
|
||||
// Create the 'class' constant
|
||||
$class_constant_value = \ltrim($this->getFQSEN()->__toString(), '\\');
|
||||
$class_constant_value = \ltrim($this->fqsen->__toString(), '\\');
|
||||
$class_constant = new ClassConstant(
|
||||
$this->getContext(),
|
||||
'class',
|
||||
@@ -3370,7 +3369,7 @@ class Clazz extends AddressableElement
|
||||
)->asRealUnionType(),
|
||||
0,
|
||||
FullyQualifiedClassConstantName::make(
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
'class'
|
||||
)
|
||||
);
|
||||
@@ -3538,7 +3537,7 @@ class Clazz extends AddressableElement
|
||||
$this->getContext(),
|
||||
Issue::CommentAbstractOnInheritedMethod,
|
||||
$this->getContext()->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$method->getRealDefiningFQSEN(),
|
||||
$method->getContext()->getFile(),
|
||||
$method->getContext()->getLineNumberStart(),
|
||||
@@ -3784,7 +3783,7 @@ class Clazz extends AddressableElement
|
||||
Issue::GenericConstructorTypes,
|
||||
$constructor_method->getContext()->getLineNumberStart(),
|
||||
$template_type,
|
||||
$this->getFQSEN()
|
||||
$this->fqsen
|
||||
);
|
||||
}
|
||||
/** @param list<\ast\Node|mixed> $unused_arg_list */
|
||||
@@ -3837,13 +3836,22 @@ class Clazz extends AddressableElement
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function markMethodAsOverridden(CodeBase $code_base, FullyQualifiedMethodName $method_fqsen): void
|
||||
{
|
||||
private static function markMethodAsOverridden(
|
||||
CodeBase $code_base,
|
||||
FullyQualifiedMethodName $method_fqsen,
|
||||
FullyQualifiedMethodName $overriding_method_fqsen
|
||||
): void {
|
||||
if (!$code_base->hasMethodWithFQSEN($method_fqsen)) {
|
||||
return;
|
||||
}
|
||||
$method = $code_base->getMethodByFQSEN($method_fqsen);
|
||||
$method->setIsOverriddenByAnother(true);
|
||||
/*
|
||||
if ($method->getName() === 'getBaz') {
|
||||
echo "Marking $method_fqsen as overridden by $overriding_method_fqsen\n";
|
||||
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
}
|
||||
*/
|
||||
$method->setIsOverriddenByAnother(true, $overriding_method_fqsen);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3968,7 +3976,7 @@ class Clazz extends AddressableElement
|
||||
// Inherit properties from traits
|
||||
$this->hydrate($code_base);
|
||||
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
foreach ($this->getPropertyMap($code_base) as $property) {
|
||||
$context = $property->getRealDefiningFQSEN()->getFullyQualifiedClassName() === $fqsen ? $property->getContext() : $this->getContext();
|
||||
Issue::maybeEmit(
|
||||
@@ -3976,7 +3984,7 @@ class Clazz extends AddressableElement
|
||||
$context,
|
||||
Issue::EnumCannotHaveProperties,
|
||||
$context->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$property->getName(),
|
||||
$property->getContext()->getFile(),
|
||||
$property->getContext()->getLineNumberStart()
|
||||
@@ -3994,7 +4002,7 @@ class Clazz extends AddressableElement
|
||||
$context,
|
||||
Issue::EnumForbiddenMagicMethod,
|
||||
$context->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$method->getName() . '()',
|
||||
$method->getContext()->getFile(),
|
||||
$method->getContext()->getLineNumberStart()
|
||||
@@ -4009,7 +4017,7 @@ class Clazz extends AddressableElement
|
||||
$context,
|
||||
Issue::InstanceMethodWithNoEnumCases,
|
||||
$context->getLineNumberStart(),
|
||||
$this->getFQSEN(),
|
||||
$this->fqsen,
|
||||
$method->getName() . '()',
|
||||
$method->getContext()->getFile(),
|
||||
$method->getContext()->getLineNumberStart()
|
||||
@@ -4041,7 +4049,7 @@ class Clazz extends AddressableElement
|
||||
'name',
|
||||
$string_type,
|
||||
ast\flags\MODIFIER_PUBLIC,
|
||||
FullyQualifiedPropertyName::make($this->getFQSEN(), 'name'),
|
||||
FullyQualifiedPropertyName::make($this->fqsen, 'name'),
|
||||
$string_type
|
||||
);
|
||||
$name_property->setPhanFlags(Flags::IS_READ_ONLY | Flags::IS_ENUM_PROPERTY);
|
||||
@@ -4053,7 +4061,7 @@ class Clazz extends AddressableElement
|
||||
'value',
|
||||
$value_type,
|
||||
ast\flags\MODIFIER_PUBLIC,
|
||||
FullyQualifiedPropertyName::make($this->getFQSEN(), 'name'),
|
||||
FullyQualifiedPropertyName::make($this->fqsen, 'name'),
|
||||
$value_type
|
||||
);
|
||||
$value_property->setPhanFlags(Flags::IS_READ_ONLY | Flags::IS_ENUM_PROPERTY);
|
||||
|
||||
+5
-4
@@ -29,6 +29,7 @@ use Phan\Memoize;
|
||||
* Phan's representation of a closure or global function.
|
||||
*
|
||||
* @phan-file-suppress PhanPartialTypeMismatchArgument
|
||||
* @property FullyQualifiedFunctionName $fqsen
|
||||
*/
|
||||
class Func extends AddressableElement implements FunctionInterface
|
||||
{
|
||||
@@ -334,7 +335,7 @@ class Func extends AddressableElement implements FunctionInterface
|
||||
public function alternateGenerator(CodeBase $code_base): \Generator
|
||||
{
|
||||
$alternate_id = 0;
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
|
||||
while ($code_base->hasFunctionWithFQSEN($fqsen)) {
|
||||
yield $code_base->getFunctionByFQSEN($fqsen);
|
||||
@@ -394,7 +395,7 @@ class Func extends AddressableElement implements FunctionInterface
|
||||
*/
|
||||
public function isClosure(): bool
|
||||
{
|
||||
return $this->getFQSEN()->isClosure();
|
||||
return $this->fqsen->isClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -411,7 +412,7 @@ class Func extends AddressableElement implements FunctionInterface
|
||||
|
||||
public function getMarkupDescription(): string
|
||||
{
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
$namespace = \ltrim($fqsen->getNamespace(), '\\');
|
||||
$stub = '';
|
||||
if (StringUtil::isNonZeroLengthString($namespace)) {
|
||||
@@ -438,7 +439,7 @@ class Func extends AddressableElement implements FunctionInterface
|
||||
*/
|
||||
public function toStubInfo(): array
|
||||
{
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
$stub = '';
|
||||
if (self::shouldAddDescriptionsToStubs()) {
|
||||
$description = (string)MarkupDescription::extractDescriptionFromDocComment($this);
|
||||
|
||||
@@ -15,6 +15,7 @@ use Phan\Language\Type;
|
||||
use Phan\Language\Type\FunctionLikeDeclarationType;
|
||||
use Phan\Language\Type\TemplateType;
|
||||
use Phan\Language\UnionType;
|
||||
use Phan\PluginV3;
|
||||
|
||||
/**
|
||||
* Interface defining the behavior of both Methods and Functions
|
||||
@@ -360,14 +361,17 @@ interface FunctionInterface extends AddressableElementInterface
|
||||
|
||||
/**
|
||||
* Make additional analysis logic of this function/method use $closure
|
||||
* If callers need to invoke multiple closures, they should pass in a closure to invoke multiple closures or use addFunctionCallAnalyzer.
|
||||
* If callers need to invoke multiple closures, they should pass in a closure to invoke multiple closures with addFunctionCallAnalyzer and the plugin that created the closure.
|
||||
* @suppress PhanUnreferencedPublicMethod
|
||||
* @deprecated
|
||||
*/
|
||||
public function setFunctionCallAnalyzer(Closure $closure): void;
|
||||
|
||||
/**
|
||||
* If callers need to invoke multiple closures, they should pass in a closure to invoke multiple closures.
|
||||
* @param ?PluginV3 $plugin @phan-mandatory-param
|
||||
*/
|
||||
public function addFunctionCallAnalyzer(Closure $closure): void;
|
||||
public function addFunctionCallAnalyzer(Closure $closure, ?PluginV3 $plugin = null): void;
|
||||
|
||||
/**
|
||||
* Initialize the inner scope of this method with variables created from the parameters.
|
||||
|
||||
@@ -40,6 +40,7 @@ use Phan\Language\Type\TrueType;
|
||||
use Phan\Language\Type\VoidType;
|
||||
use Phan\Language\UnionType;
|
||||
use Phan\Plugin\ConfigPluginSet;
|
||||
use Phan\PluginV3;
|
||||
|
||||
use function count;
|
||||
use function end;
|
||||
@@ -1151,6 +1152,7 @@ trait FunctionTrait
|
||||
/**
|
||||
* Make additional analysis logic of this function/method use $closure
|
||||
* If callers need to invoke multiple closures, they should pass in a closure to invoke multiple closures or use addFunctionCallAnalyzer.
|
||||
* @suppress PhanUnreferencedPublicMethod
|
||||
*/
|
||||
public function setFunctionCallAnalyzer(Closure $closure): void
|
||||
{
|
||||
@@ -1163,10 +1165,11 @@ trait FunctionTrait
|
||||
|
||||
/**
|
||||
* Make additional analysis logic of this function/method use $closure in addition to any other closures.
|
||||
* @param ?PluginV3 $plugin @phan-mandatory-param
|
||||
*/
|
||||
public function addFunctionCallAnalyzer(Closure $closure): void
|
||||
public function addFunctionCallAnalyzer(Closure $closure, PluginV3 $plugin = null): void
|
||||
{
|
||||
$closure_id = spl_object_id($closure);
|
||||
$closure_id = spl_object_id($plugin ?? $closure);
|
||||
if (isset($this->function_call_analyzer_callback_set[$closure_id])) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ use Phan\Library\StringUtil;
|
||||
|
||||
/**
|
||||
* Phan's representation of a global constant
|
||||
* @property FullyQualifiedGlobalConstantName $fqsen
|
||||
*/
|
||||
class GlobalConstant extends AddressableElement implements ConstantInterface
|
||||
{
|
||||
@@ -137,7 +138,7 @@ class GlobalConstant extends AddressableElement implements ConstantInterface
|
||||
/** @return array{0:string,1:string} [string $namespace, string $text] */
|
||||
public function toStubInfo(): array
|
||||
{
|
||||
$fqsen = (string)$this->getFQSEN();
|
||||
$fqsen = (string)$this->fqsen;
|
||||
$pos = \strrpos($fqsen, '\\');
|
||||
if ($pos !== false) {
|
||||
$name = (string)\substr($fqsen, $pos + 1);
|
||||
@@ -153,7 +154,7 @@ class GlobalConstant extends AddressableElement implements ConstantInterface
|
||||
$repr = 'null';
|
||||
$comment = ' // could not find';
|
||||
}
|
||||
$namespace = \ltrim($this->getFQSEN()->getNamespace(), '\\');
|
||||
$namespace = \ltrim($this->fqsen->getNamespace(), '\\');
|
||||
if (\preg_match('@^[a-zA-Z_\x7f-\xff\\\][a-zA-Z0-9_\x7f-\xff\\\]*$@D', $name)) {
|
||||
$string = "const $name = $repr;$comment\n";
|
||||
} else {
|
||||
|
||||
@@ -23,6 +23,7 @@ class GlobalVariable extends Variable
|
||||
{
|
||||
$this->type = $type;
|
||||
// Always merge the type on the actual global.
|
||||
$this->element->setUnionType($this->element->getUnionType()->withUnionType($type->eraseRealTypeSetRecursively()));
|
||||
// Convert undefined to null before merging in the type.
|
||||
$this->element->setUnionType($this->element->getUnionType()->withUnionType($type->eraseRealTypeSetRecursively())->withIsPossiblyUndefined(false));
|
||||
}
|
||||
}
|
||||
|
||||
+45
-3
@@ -19,6 +19,7 @@ use Phan\Language\Scope\ClassScope;
|
||||
use Phan\Language\Scope\FunctionLikeScope;
|
||||
use Phan\Language\Scope\GlobalScope;
|
||||
use Phan\Language\UnionType;
|
||||
use Phan\Library\Set;
|
||||
use Phan\Memoize;
|
||||
|
||||
/**
|
||||
@@ -26,6 +27,7 @@ use Phan\Memoize;
|
||||
*
|
||||
* @phan-file-suppress PhanPartialTypeMismatchArgument
|
||||
* @method FullyQualifiedMethodName getDefiningFQSEN() @phan-suppress-current-line PhanParamSignaturePHPDocMismatchReturnType
|
||||
* @property FullyQualifiedMethodName $fqsen
|
||||
*/
|
||||
class Method extends ClassElement implements FunctionInterface
|
||||
{
|
||||
@@ -49,6 +51,11 @@ class Method extends ClassElement implements FunctionInterface
|
||||
*/
|
||||
private $defining_method_for_type_fetching;
|
||||
|
||||
/**
|
||||
* @var Set<FullyQualifiedMethodName> FQSENs of methods potentially overriding this one.
|
||||
*/
|
||||
private $method_overrides;
|
||||
|
||||
/**
|
||||
* @param Context $context
|
||||
* The context in which the structural element lives
|
||||
@@ -110,6 +117,8 @@ class Method extends ClassElement implements FunctionInterface
|
||||
$this->setParameterList($parameter_list);
|
||||
}
|
||||
$this->checkForTemplateTypes();
|
||||
|
||||
$this->method_overrides = new Set();
|
||||
}
|
||||
|
||||
public function __clone()
|
||||
@@ -166,19 +175,52 @@ class Method extends ClassElement implements FunctionInterface
|
||||
return $this->getPhanFlagsHasState(Flags::IS_OVERRIDDEN_BY_ANOTHER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a (possibly incomplete) list of methods overriding this one.
|
||||
* @param CodeBase $code_base
|
||||
* @return list<Method>
|
||||
* @suppress PhanUnreferencedPublicMethod May be called by plugins (#4502)
|
||||
*/
|
||||
public function getPossibleOverrides(CodeBase $code_base): array
|
||||
{
|
||||
$ret = [];
|
||||
foreach ($this->method_overrides as $fqsen) {
|
||||
// Consistency checks, mostly for language server mode.
|
||||
/** @var FullyQualifiedMethodName $fqsen */
|
||||
if (!$code_base->hasMethodWithFQSEN($fqsen)) {
|
||||
continue;
|
||||
}
|
||||
$method = $code_base->getMethodByFQSEN($fqsen);
|
||||
if ($method->getDefiningFQSEN() !== $fqsen) {
|
||||
continue;
|
||||
}
|
||||
$subclassExpanded = $method->getClassFQSEN()->asType()->asExpandedTypes($code_base);
|
||||
$thisClassType = $this->getClassFQSEN()->asType();
|
||||
if ($subclassExpanded->hasType($thisClassType)) {
|
||||
$ret[] = $method;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether this method is overridden by another method
|
||||
*
|
||||
* @param bool $is_overridden_by_another
|
||||
* True if this method is overridden by another method
|
||||
* @param FullyQualifiedMethodName|null $fqsen
|
||||
* FQSEN of the overriding method, if available and $is_overridden_by_another is true.
|
||||
*/
|
||||
public function setIsOverriddenByAnother(bool $is_overridden_by_another): void
|
||||
public function setIsOverriddenByAnother(bool $is_overridden_by_another, FullyQualifiedMethodName $fqsen = null): void
|
||||
{
|
||||
$this->setPhanFlags(Flags::bitVectorWithState(
|
||||
$this->getPhanFlags(),
|
||||
Flags::IS_OVERRIDDEN_BY_ANOTHER,
|
||||
$is_overridden_by_another
|
||||
));
|
||||
if ($is_overridden_by_another && $fqsen) {
|
||||
$this->method_overrides->attach($fqsen);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -675,7 +717,7 @@ class Method extends ClassElement implements FunctionInterface
|
||||
|
||||
// If the type contains 'static', add this method's class
|
||||
// to the return type.
|
||||
$scope = new ClassScope(new GlobalScope(), $this->getFQSEN()->getFullyQualifiedClassName(), 0);
|
||||
$scope = new ClassScope(new GlobalScope(), $this->fqsen->getFullyQualifiedClassName(), 0);
|
||||
$new_union_type = $union_type->withStaticResolvedInContext((clone $this->getContext())->withScope($scope));
|
||||
if ($new_union_type !== $union_type) {
|
||||
$union_type = $union_type->withUnionType($new_union_type);
|
||||
@@ -704,7 +746,7 @@ class Method extends ClassElement implements FunctionInterface
|
||||
{
|
||||
// Workaround so that methods of generic classes will have the resolved template types
|
||||
yield $this;
|
||||
$fqsen = $this->getFQSEN();
|
||||
$fqsen = $this->fqsen;
|
||||
$alternate_id = $fqsen->getAlternateId() + 1;
|
||||
|
||||
$fqsen = $fqsen->withAlternateId($alternate_id);
|
||||
|
||||
@@ -382,7 +382,7 @@ class Parameter extends Variable
|
||||
);
|
||||
}
|
||||
$parameter = Parameter::create(
|
||||
(clone($context))->withLineNumberStart($node->lineno),
|
||||
(clone $context)->withLineNumberStart($node->lineno),
|
||||
$parameter_name,
|
||||
$union_type,
|
||||
$node->flags
|
||||
@@ -448,7 +448,7 @@ class Parameter extends Variable
|
||||
if (!$has_error) {
|
||||
$parameter->setDefaultValueFutureType(new FutureUnionType(
|
||||
$code_base,
|
||||
(clone($context))->withLineNumberStart($default_node->lineno ?? 0),
|
||||
(clone $context)->withLineNumberStart($default_node->lineno ?? 0),
|
||||
$default_node
|
||||
));
|
||||
}
|
||||
|
||||
+1
-1
@@ -473,7 +473,7 @@ class Property extends ClassElement
|
||||
try {
|
||||
$union_type = $future_union_type->get();
|
||||
if (!$this->real_union_type->isEmpty()
|
||||
&& !$union_type->canStrictCastToUnionType($future_union_type->getCodeBase(), $this->real_union_type)) {
|
||||
&& !$union_type->canCastToUnionType($this->real_union_type, $future_union_type->getCodeBase())) {
|
||||
Issue::maybeEmit(
|
||||
$future_union_type->getCodeBase(),
|
||||
$future_union_type->getContext(),
|
||||
|
||||
+1
-1
@@ -290,7 +290,7 @@ class Variable extends UnaddressableTypedElement implements TypedElementInterfac
|
||||
{
|
||||
$string = '';
|
||||
|
||||
if (!$this->type->isEmpty()) {
|
||||
if (!$this->type->isEmpty() || $this->type->isPossiblyUndefined()) {
|
||||
$string .= "{$this->type->getDebugRepresentation()} ";
|
||||
}
|
||||
|
||||
|
||||
+19
-1
@@ -979,13 +979,31 @@ final class EmptyUnionType extends UnionType
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* True if this is exclusively generic types
|
||||
* True if this is non-empty and exclusively generic array types
|
||||
*/
|
||||
public function isGenericArray(): bool
|
||||
{
|
||||
return false; // empty
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* True if this is non-empty and exclusively array types.
|
||||
*/
|
||||
public function isArray(): bool
|
||||
{
|
||||
return false; // empty
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* True if this is non-empty and exclusively object types.
|
||||
*/
|
||||
public function isObject(): bool
|
||||
{
|
||||
return false; // empty
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
* True if any of the types in this UnionType made $matcher_callback return true
|
||||
|
||||
@@ -98,6 +98,7 @@ abstract class AbstractFQSEN implements FQSEN, Serializable
|
||||
abstract public function __toString(): string;
|
||||
|
||||
/**
|
||||
* @return never
|
||||
* @throws Error to prevent accidentally calling this
|
||||
*/
|
||||
public function __clone()
|
||||
@@ -108,6 +109,7 @@ abstract class AbstractFQSEN implements FQSEN, Serializable
|
||||
|
||||
/**
|
||||
* @throws Error to prevent accidentally calling this
|
||||
* @return never
|
||||
*/
|
||||
public function serialize(): string
|
||||
{
|
||||
@@ -117,6 +119,7 @@ abstract class AbstractFQSEN implements FQSEN, Serializable
|
||||
|
||||
/**
|
||||
* @param string $serialized
|
||||
* @return never
|
||||
* @throws Error to prevent accidentally calling this
|
||||
*/
|
||||
public function unserialize($serialized): void
|
||||
@@ -127,7 +130,7 @@ abstract class AbstractFQSEN implements FQSEN, Serializable
|
||||
|
||||
/**
|
||||
* @throws Error to prevent accidentally calling this
|
||||
* @return array<string,mixed> TODO: Switch to phpdoc never
|
||||
* @return never
|
||||
*/
|
||||
public function __serialize(): array
|
||||
{
|
||||
@@ -138,6 +141,7 @@ abstract class AbstractFQSEN implements FQSEN, Serializable
|
||||
* @unused-param $data
|
||||
* @param array<string,mixed> $data
|
||||
* @throws Error to prevent accidentally calling this
|
||||
* @return never
|
||||
*/
|
||||
public function __unserialize(array $data): void
|
||||
{
|
||||
|
||||
+1
@@ -264,6 +264,7 @@ abstract class FullyQualifiedGlobalStructuralElement extends AbstractFQSEN
|
||||
$key,
|
||||
/**
|
||||
* @throws FQSENException
|
||||
* @return never
|
||||
*/
|
||||
static function (): self {
|
||||
// Reuse the exception to save time generating an unused stack trace.
|
||||
|
||||
+530
-491
@@ -40,7 +40,7 @@ namespace Phan\Language\Internal;
|
||||
* 1. '&rw_name' indicates that a parameter with a value is expected to be passed in, and may be modified.
|
||||
* 2. '&w_name' indicates that a parameter is expected to be passed in, and the value will be ignored, and may be overwritten.
|
||||
*
|
||||
* This file contains the signatures for the most recent minor release of PHP supported by phan (php 7.2)
|
||||
* This file contains the signatures for the most recent minor release of PHP supported by phan (php 8.0)
|
||||
*
|
||||
* Changes:
|
||||
*
|
||||
@@ -245,7 +245,7 @@ return [
|
||||
'apache_getenv' => ['string|false', 'variable'=>'string', 'walk_to_top='=>'bool'],
|
||||
'apache_lookup_uri' => ['object', 'filename'=>'string'],
|
||||
'apache_note' => ['string|false', 'note_name'=>'string', 'note_value='=>'string'],
|
||||
'apache_request_headers' => ['array<string,mixed>|false'],
|
||||
'apache_request_headers' => ['array<string,mixed>'],
|
||||
'apache_reset_timeout' => ['bool'],
|
||||
'apache_response_headers' => ['array<string,mixed>'],
|
||||
'apache_setenv' => ['bool', 'variable'=>'string', 'value'=>'string', 'walk_to_top='=>'bool'],
|
||||
@@ -359,7 +359,7 @@ return [
|
||||
'array_change_key_case' => ['associative-array', 'array'=>'array', 'case='=>'int'],
|
||||
'array_chunk' => ['list<array>', 'array'=>'array', 'length'=>'int', 'preserve_keys='=>'bool'],
|
||||
'array_column' => ['array', 'array'=>'array', 'column_key'=>'?int|?string', 'index_key='=>'?int|?string'],
|
||||
'array_combine' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
'array_combine' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
'array_count_values' => ['associative-array<mixed,int>', 'array'=>'array'],
|
||||
'array_diff' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'],
|
||||
'array_diff_assoc' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'],
|
||||
@@ -379,7 +379,7 @@ return [
|
||||
'array_intersect_uassoc\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'],
|
||||
'array_intersect_ukey' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'],
|
||||
'array_intersect_ukey\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'],
|
||||
'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array|ArrayObject'],
|
||||
'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array'],
|
||||
'array_key_first' => ['int|string|null', 'array'=>'array'],
|
||||
'array_key_last' => ['int|string|null', 'array'=>'array'],
|
||||
'array_keys' => ['list<string>|list<int>', 'array'=>'array', 'filter_value='=>'mixed', 'strict='=>'bool'],
|
||||
@@ -518,8 +518,8 @@ return [
|
||||
'bbcode_set_flags' => ['bool', 'bbcode_container'=>'resource', 'flags'=>'int', 'mode='=>'int'],
|
||||
'bcadd' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bccomp' => ['int', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcdiv' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcmod' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcdiv' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcmod' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcmul' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcompiler_load' => ['bool', 'filename'=>'string'],
|
||||
'bcompiler_load_exe' => ['bool', 'filename'=>'string'],
|
||||
@@ -535,7 +535,7 @@ return [
|
||||
'bcompiler_write_header' => ['bool', 'filehandle'=>'resource', 'write_ver='=>'string'],
|
||||
'bcompiler_write_included_filename' => ['bool', 'filehandle'=>'resource', 'filename'=>'string'],
|
||||
'bcpow' => ['string', 'num'=>'string', 'exponent'=>'string', 'scale='=>'int'],
|
||||
'bcpowmod' => ['?string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
'bcpowmod' => ['string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
'bcscale' => ['int', 'scale='=>'int'],
|
||||
'bcsqrt' => ['string', 'num'=>'string', 'scale='=>'int'],
|
||||
'bcsub' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
@@ -1105,7 +1105,7 @@ return [
|
||||
'collator_get_error_message' => ['string', 'object'=>'collator'],
|
||||
'collator_get_locale' => ['string', 'object'=>'collator', 'type'=>'int'],
|
||||
'collator_get_sort_key' => ['string', 'object'=>'collator', 'string'=>'string'],
|
||||
'collator_get_strength' => ['int|false', 'object'=>'collator'],
|
||||
'collator_get_strength' => ['int', 'object'=>'collator'],
|
||||
'collator_set_attribute' => ['bool', 'object'=>'collator', 'attribute'=>'int', 'value'=>'int'],
|
||||
'collator_set_strength' => ['bool', 'object'=>'collator', 'strength'=>'int'],
|
||||
'collator_sort' => ['bool', 'object'=>'collator', '&rw_array'=>'array', 'flags='=>'int'],
|
||||
@@ -1123,7 +1123,7 @@ return [
|
||||
'com_event_sink' => ['bool', 'variant'=>'variant', 'sink_object'=>'object', 'sink_interface='=>'?array|?string'],
|
||||
'com_get_active_object' => ['variant', 'prog_id'=>'string', 'codepage='=>'int'],
|
||||
'com_isenum' => ['bool', 'com_module'=>'variant'],
|
||||
'com_load_typelib' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'bool'],
|
||||
'com_load_typelib' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'true'],
|
||||
'com_message_pump' => ['bool', 'timeout_milliseconds='=>'int'],
|
||||
'com_print_typeinfo' => ['bool', 'variant'=>'variant|string', 'dispatch_interface='=>'string', 'display_sink='=>'bool'],
|
||||
'commonmark\cql::__invoke' => ['', 'root'=>'CommonMark\Node', 'handler'=>'callable'],
|
||||
@@ -1540,7 +1540,7 @@ return [
|
||||
'Couchbase\zlibCompress' => ['string', 'data'=>'string'],
|
||||
'Couchbase\zlibDecompress' => ['string', 'data'=>'string'],
|
||||
'count' => ['int', 'value'=>'Countable|array|SimpleXMLElement|ResourceBundle', 'mode='=>'int'],
|
||||
'count_chars' => ['array<int,int>|false|string', 'string'=>'string', 'mode='=>'int'],
|
||||
'count_chars' => ['array<int,int>|string', 'string'=>'string', 'mode='=>'int'],
|
||||
'Countable::count' => ['int'],
|
||||
'crack_check' => ['bool', 'dictionary'=>'', 'password'=>'string'],
|
||||
'crack_closedict' => ['bool', 'dictionary='=>'resource'],
|
||||
@@ -1548,7 +1548,6 @@ return [
|
||||
'crack_opendict' => ['resource|false', 'dictionary'=>'string'],
|
||||
'crash' => [''],
|
||||
'crc32' => ['int', 'string'=>'string'],
|
||||
'create_function' => ['string', 'args'=>'string', 'code'=>'string'],
|
||||
'crypt' => ['string', 'string'=>'string', 'salt'=>'string'],
|
||||
'Crypto\Base64::__construct' => ['void'],
|
||||
'Crypto\Base64::decode' => ['string', 'data'=>'string'],
|
||||
@@ -1734,37 +1733,37 @@ return [
|
||||
'cubrid_set_query_timeout' => ['bool', 'req_identifier'=>'resource', 'timeout'=>'int'],
|
||||
'cubrid_unbuffered_query' => ['resource', 'query'=>'string', 'conn_identifier='=>''],
|
||||
'cubrid_version' => ['string'],
|
||||
'curl_close' => ['void', 'handle'=>'resource'],
|
||||
'curl_copy_handle' => ['resource', 'handle'=>'resource'],
|
||||
'curl_errno' => ['int', 'handle'=>'resource'],
|
||||
'curl_error' => ['string', 'handle'=>'resource'],
|
||||
'curl_escape' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'curl_exec' => ['bool|string', 'handle'=>'resource'],
|
||||
'curl_close' => ['void', 'handle'=>'CurlHandle'],
|
||||
'curl_copy_handle' => ['CurlHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_errno' => ['int', 'handle'=>'CurlHandle'],
|
||||
'curl_error' => ['string', 'handle'=>'CurlHandle'],
|
||||
'curl_escape' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
'curl_exec' => ['bool|string', 'handle'=>'CurlHandle'],
|
||||
'curl_file_create' => ['CURLFile', 'filename'=>'string', 'mime_type='=>'string', 'posted_filename='=>'string'],
|
||||
'curl_getinfo' => ['mixed', 'handle'=>'resource', 'option='=>'int'],
|
||||
'curl_init' => ['resource|false', 'url='=>'string'],
|
||||
'curl_multi_add_handle' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'curl_multi_close' => ['void', 'multi_handle'=>'resource'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'resource'],
|
||||
'curl_multi_exec' => ['int', 'multi_handle'=>'resource', '&w_still_running'=>'int'],
|
||||
'curl_multi_getcontent' => ['string', 'handle'=>'resource'],
|
||||
'curl_multi_info_read' => ['array|false', 'multi_handle'=>'resource', '&w_queued_messages='=>'int'],
|
||||
'curl_multi_init' => ['resource'],
|
||||
'curl_multi_remove_handle' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'curl_multi_select' => ['int', 'multi_handle'=>'resource', 'timeout='=>'float'],
|
||||
'curl_multi_setopt' => ['bool', 'multi_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_getinfo' => ['mixed', 'handle'=>'CurlHandle', 'option='=>'int'],
|
||||
'curl_init' => ['CurlHandle|false', 'url='=>'string'],
|
||||
'curl_multi_add_handle' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_close' => ['void', 'multi_handle'=>'CurlMultiHandle'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'CurlMultiHandle'],
|
||||
'curl_multi_exec' => ['int', 'multi_handle'=>'CurlMultiHandle', '&w_still_running'=>'int'],
|
||||
'curl_multi_getcontent' => ['string', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_info_read' => ['array|false', 'multi_handle'=>'CurlMultiHandle', '&w_queued_messages='=>'int'],
|
||||
'curl_multi_init' => ['CurlMultiHandle'],
|
||||
'curl_multi_remove_handle' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_select' => ['int', 'multi_handle'=>'CurlMultiHandle', 'timeout='=>'float'],
|
||||
'curl_multi_setopt' => ['bool', 'multi_handle'=>'CurlMultiHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_multi_strerror' => ['?string', 'error_code'=>'int'],
|
||||
'curl_pause' => ['int', 'handle'=>'resource', 'flags'=>'int'],
|
||||
'curl_reset' => ['void', 'handle'=>'resource'],
|
||||
'curl_setopt' => ['bool', 'handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_setopt_array' => ['bool', 'handle'=>'resource', 'options'=>'array'],
|
||||
'curl_share_close' => ['void', 'share_handle'=>'resource'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'resource'],
|
||||
'curl_share_init' => ['resource'],
|
||||
'curl_share_setopt' => ['bool', 'share_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_pause' => ['int', 'handle'=>'CurlHandle', 'flags'=>'int'],
|
||||
'curl_reset' => ['void', 'handle'=>'CurlHandle'],
|
||||
'curl_setopt' => ['bool', 'handle'=>'CurlHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_setopt_array' => ['bool', 'handle'=>'CurlHandle', 'options'=>'array'],
|
||||
'curl_share_close' => ['void', 'share_handle'=>'CurlShareHandle'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'CurlShareHandle'],
|
||||
'curl_share_init' => ['CurlShareHandle'],
|
||||
'curl_share_setopt' => ['bool', 'share_handle'=>'CurlShareHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_share_strerror' => ['string', 'error_code'=>'int'],
|
||||
'curl_strerror' => ['?string', 'error_code'=>'int'],
|
||||
'curl_unescape' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'curl_unescape' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
'curl_version' => ['array<string,mixed>', 'version='=>'int'],
|
||||
'CURLFile::__construct' => ['void', 'filename'=>'string', 'mime_type='=>'string', 'posted_filename='=>'string'],
|
||||
'CURLFile::__wakeup' => ['void'],
|
||||
@@ -1781,33 +1780,33 @@ return [
|
||||
'cyrus_query' => ['array', 'connection'=>'resource', 'query'=>'string'],
|
||||
'cyrus_unbind' => ['bool', 'connection'=>'resource', 'trigger_name'=>'string'],
|
||||
'date' => ['string', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'date_add' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_add' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_create' => ['DateTime|false', 'datetime='=>'string', 'timezone='=>'?DateTimeZone'],
|
||||
'date_create_from_format' => ['DateTime|false', 'format'=>'string', 'datetime'=>'string', 'timezone='=>'DateTimeZone'],
|
||||
'date_create_immutable' => ['DateTimeImmutable|false', 'datetime='=>'string', 'timezone='=>'?DateTimeZone'],
|
||||
'date_create_immutable_from_format' => ['DateTimeImmutable', 'format'=>'string', 'datetime'=>'string', 'timezone='=>'?DateTimeZone'],
|
||||
'date_date_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
'date_date_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
'date_default_timezone_get' => ['string'],
|
||||
'date_default_timezone_set' => ['bool', 'timezoneId'=>'string'],
|
||||
'date_diff' => ['DateInterval|false', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'date_format' => ['string|false', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
'date_diff' => ['DateInterval', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'date_format' => ['string', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
'date_get_last_errors' => ['array<string,mixed>'],
|
||||
'date_interval_create_from_date_string' => ['DateInterval', 'datetime'=>'string'],
|
||||
'date_interval_format' => ['string', 'object'=>'DateInterval', 'format'=>'string'],
|
||||
'date_isodate_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
'date_isodate_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
'date_modify' => ['DateTime|false', 'object'=>'DateTime', 'modifier'=>'string'],
|
||||
'date_offset_get' => ['int', 'object'=>'DateTimeInterface'],
|
||||
'date_parse' => ['array<string,mixed>|false', 'datetime'=>'string'],
|
||||
'date_parse' => ['array<string,mixed>', 'datetime'=>'string'],
|
||||
'date_parse_from_format' => ['array<string,mixed>', 'format'=>'string', 'datetime'=>'string'],
|
||||
'date_sub' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_sun_info' => ['array<string,bool|int>|false', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
'date_sub' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_sun_info' => ['array<string,bool|int>', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
'date_sunrise' => ['false|float|int|string', 'timestamp'=>'int', 'returnFormat='=>'int', 'latitude='=>'float', 'longitude='=>'float', 'zenith='=>'float', 'utcOffset='=>'float'],
|
||||
'date_sunset' => ['false|float|int|string', 'timestamp'=>'int', 'returnFormat='=>'int', 'latitude='=>'float', 'longitude='=>'float', 'zenith='=>'float', 'utcOffset='=>'float'],
|
||||
'date_time_set' => ['DateTime|false', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
'date_time_set' => ['DateTime', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
'date_timestamp_get' => ['int', 'object'=>'DateTimeInterface'],
|
||||
'date_timestamp_set' => ['DateTime|false', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
'date_timestamp_set' => ['DateTime', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
'date_timezone_get' => ['DateTimeZone|false', 'object'=>'DateTimeInterface'],
|
||||
'date_timezone_set' => ['DateTime|false', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
'date_timezone_set' => ['DateTime', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
'datefmt_create' => ['IntlDateFormatter', 'locale'=>'string', 'dateType'=>'int', 'timeType'=>'int', 'timezone='=>'string|IntlTimeZone|DateTimeZone|null', 'calendar='=>'int|IntlCalendar|null', 'pattern='=>'string'],
|
||||
'datefmt_format' => ['string', 'formatter'=>'IntlDateFormatter', 'datetime'=>'DateTime|IntlCalendar|array|int'],
|
||||
'datefmt_format_object' => ['string', 'datetime'=>'DateTimeInterface|IntlCalendar', 'format='=>'array|int|null|string', 'locale='=>'string'],
|
||||
@@ -1841,6 +1840,7 @@ return [
|
||||
'DatePeriod::__wakeup' => ['void'],
|
||||
'DatePeriod::getDateInterval' => ['DateInterval'],
|
||||
'DatePeriod::getEndDate' => ['?DateTimeInterface'],
|
||||
'DatePeriod::getRecurrences' => ['int'],
|
||||
'DatePeriod::getStartDate' => ['DateTimeInterface'],
|
||||
'DateTime::__construct' => ['void', 'datetime='=>'?string', 'timezone='=>'?DateTimeZone'],
|
||||
'DateTime::__set_state' => ['static', 'array'=>'array'],
|
||||
@@ -1848,6 +1848,7 @@ return [
|
||||
'DateTime::add' => ['static', 'interval'=>'DateInterval'],
|
||||
'DateTime::createFromFormat' => ['static|false', 'format'=>'string', 'datetime'=>'string', 'timezone='=>'?DateTimeZone'],
|
||||
'DateTime::createFromImmutable' => ['static', 'object'=>'DateTimeImmutable'],
|
||||
'DateTime::createFromInterface' => ['self', 'object'=>'DateTimeInterface'],
|
||||
'DateTime::diff' => ['DateInterval', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'DateTime::format' => ['string', 'format'=>'string'],
|
||||
'DateTime::getLastErrors' => ['array'],
|
||||
@@ -1866,6 +1867,7 @@ return [
|
||||
'DateTimeImmutable::__wakeup' => ['void'],
|
||||
'DateTimeImmutable::add' => ['static', 'interval'=>'DateInterval'],
|
||||
'DateTimeImmutable::createFromFormat' => ['static|false', 'format'=>'string', 'datetime'=>'string', 'timezone='=>'?DateTimeZone'],
|
||||
'DateTimeImmutable::createFromInterface' => ['self', 'object'=>'DateTimeInterface'],
|
||||
'DateTimeImmutable::createFromMutable' => ['static', 'object'=>'DateTime'],
|
||||
'DateTimeImmutable::diff' => ['DateInterval', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'DateTimeImmutable::format' => ['string|false', 'format'=>'string'],
|
||||
@@ -2079,8 +2081,8 @@ return [
|
||||
'ddtrace_config_trace_enabled' => [''],
|
||||
'ddtrace_init' => ['', 'dir'=>''],
|
||||
'deaggregate' => ['', 'object'=>'object', 'class_name='=>'string'],
|
||||
'debug_backtrace' => ['list<array>', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'debug_print_backtrace' => ['void', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'debug_backtrace' => ['list<array>', 'options='=>'int', 'limit='=>'int'],
|
||||
'debug_print_backtrace' => ['void', 'options='=>'int', 'limit='=>'int'],
|
||||
'debug_zval_dump' => ['void', '...value'=>'mixed'],
|
||||
'debugger_connect' => [''],
|
||||
'debugger_connector_pid' => [''],
|
||||
@@ -2095,8 +2097,8 @@ return [
|
||||
'define' => ['bool', 'constant_name'=>'string', 'value'=>'mixed', 'case_insensitive='=>'bool'],
|
||||
'define_syslog_variables' => ['void'],
|
||||
'defined' => ['bool', 'constant_name'=>'string'],
|
||||
'deflate_add' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'deflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'deflate_add' => ['string|false', 'context'=>'DeflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'deflate_init' => ['DeflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'deg2rad' => ['float', 'num'=>'float'],
|
||||
'dgettext' => ['string', 'domain'=>'string', 'message'=>'string'],
|
||||
'dio_close' => ['void', 'fd'=>'resource'],
|
||||
@@ -2168,7 +2170,7 @@ return [
|
||||
'dom_document_schema_validate' => ['bool', 'source'=>'string', 'flags'=>'int'],
|
||||
'dom_document_schema_validate_file' => ['bool', 'filename'=>'string', 'flags'=>'int'],
|
||||
'dom_document_xinclude' => ['int', 'options'=>'int'],
|
||||
'dom_import_simplexml' => ['DOMElement|false|null', 'node'=>'SimpleXMLElement'],
|
||||
'dom_import_simplexml' => ['DOMElement|null', 'node'=>'SimpleXMLElement'],
|
||||
'dom_xpath_evaluate' => ['', 'expr'=>'string', 'context'=>'DOMNode', 'registernodens'=>'bool'],
|
||||
'dom_xpath_query' => ['DOMNodeList', 'expr'=>'string', 'context'=>'DOMNode', 'registernodens'=>'bool'],
|
||||
'dom_xpath_register_ns' => ['bool', 'prefix'=>'string', 'uri'=>'string'],
|
||||
@@ -2578,8 +2580,7 @@ return [
|
||||
'Ds\Vector::sum' => ['int|float'],
|
||||
'Ds\Vector::toArray' => ['array'],
|
||||
'Ds\Vector::unshift' => ['void', '...values='=>'mixed'],
|
||||
'each' => ['array{0:int|string,key:int|string,1:mixed,value:mixed}', '&r_arr'=>'array'],
|
||||
'easter_date' => ['int', 'year='=>'int', 'mode='=>'int'],
|
||||
'easter_date' => ['int', 'year='=>'?int', 'mode='=>'int'],
|
||||
'easter_days' => ['int', 'year='=>'int', 'mode='=>'int'],
|
||||
'echo' => ['void', 'arg1'=>'string', '...args='=>'string'],
|
||||
'eio_busy' => ['resource', 'delay'=>'int', 'pri='=>'int', 'callback='=>'callable', 'data='=>'mixed'],
|
||||
@@ -2647,27 +2648,27 @@ return [
|
||||
'EmptyIterator::next' => ['void'],
|
||||
'EmptyIterator::rewind' => ['void'],
|
||||
'EmptyIterator::valid' => ['bool'],
|
||||
'enchant_broker_describe' => ['array', 'broker'=>'resource'],
|
||||
'enchant_broker_dict_exists' => ['bool', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'enchant_broker_free' => ['bool', 'broker'=>'resource'],
|
||||
'enchant_broker_free_dict' => ['bool', 'dictionary'=>'resource'],
|
||||
'enchant_broker_get_dict_path' => ['string', 'broker'=>'resource', 'type'=>'int'],
|
||||
'enchant_broker_get_error' => ['string|false', 'broker'=>'resource'],
|
||||
'enchant_broker_init' => ['resource|false'],
|
||||
'enchant_broker_list_dicts' => ['array', 'broker'=>'resource'],
|
||||
'enchant_broker_request_dict' => ['resource|false', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'enchant_broker_request_pwl_dict' => ['resource|false', 'broker'=>'resource', 'filename'=>'string'],
|
||||
'enchant_broker_set_dict_path' => ['bool', 'broker'=>'resource', 'type'=>'int', 'path'=>'string'],
|
||||
'enchant_broker_set_ordering' => ['bool', 'broker'=>'resource', 'tag'=>'string', 'ordering'=>'string'],
|
||||
'enchant_dict_add_to_personal' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_add_to_session' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_check' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_describe' => ['array', 'dictionary'=>'resource'],
|
||||
'enchant_dict_get_error' => ['string', 'dictionary'=>'resource'],
|
||||
'enchant_dict_is_in_session' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_quick_check' => ['bool', 'dictionary'=>'resource', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
'enchant_dict_store_replacement' => ['void', 'dictionary'=>'resource', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
'enchant_dict_suggest' => ['array', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_broker_describe' => ['array', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_dict_exists' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
'enchant_broker_free' => ['bool', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_free_dict' => ['bool', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_broker_get_dict_path' => ['string', 'broker'=>'EnchantBroker', 'type'=>'int'],
|
||||
'enchant_broker_get_error' => ['string|false', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_init' => ['EnchantBroker|false'],
|
||||
'enchant_broker_list_dicts' => ['array', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_request_dict' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
'enchant_broker_request_pwl_dict' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'filename'=>'string'],
|
||||
'enchant_broker_set_dict_path' => ['bool', 'broker'=>'EnchantBroker', 'type'=>'int', 'path'=>'string'],
|
||||
'enchant_broker_set_ordering' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string', 'ordering'=>'string'],
|
||||
'enchant_dict_add_to_personal' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_add_to_session' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_check' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_describe' => ['array', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_dict_get_error' => ['string', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_dict_is_in_session' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_quick_check' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
'enchant_dict_store_replacement' => ['void', 'dictionary'=>'EnchantDictionary', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
'enchant_dict_suggest' => ['array', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'end' => ['mixed|false', '&r_array'=>'array|object'],
|
||||
'Error::__clone' => ['void'],
|
||||
'Error::__construct' => ['void', 'message='=>'string', 'code='=>'int', 'previous='=>'?Throwable|?Error'],
|
||||
@@ -3338,7 +3339,25 @@ return [
|
||||
'fdf_set_target_frame' => ['bool', 'fdf_document'=>'resource', 'frame_name'=>'string'],
|
||||
'fdf_set_value' => ['bool', 'fdf_document'=>'resource', 'fieldname'=>'string', 'value'=>'mixed', 'isname='=>'int'],
|
||||
'fdf_set_version' => ['bool', 'fdf_document'=>'resource', 'version'=>'string'],
|
||||
'fdiv' => ['float', 'num1'=>'float', 'num2'=>'float'],
|
||||
'feof' => ['bool', 'stream'=>'resource'],
|
||||
'FFI::addr' => ['FFI\CData', '&ptr'=>'FFI\CData'],
|
||||
'FFI::alignof' => ['int', '&ptr'=>'mixed'],
|
||||
'FFI::arrayType' => ['FFI\CType', 'type'=>'string|FFI\CType', 'dimensions'=>'list<int>'],
|
||||
'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', '&ptr'=>''],
|
||||
'FFI::cdef' => ['FFI', 'code='=>'string', 'lib='=>'?string'],
|
||||
'FFI::free' => ['void', '&ptr'=>'FFI\CData'],
|
||||
'FFI::isNull' => ['bool', '&ptr'=>'FFI\CData'],
|
||||
'FFI::load' => ['FFI', 'filename'=>'string'],
|
||||
'FFI::memcmp' => ['int', '&ptr1'=>'FFI\CData|string', '&ptr2'=>'FFI\CData|string', 'size'=>'int'],
|
||||
'FFI::memcpy' => ['void', '&to'=>'FFI\CData', '&from'=>'string|FFI\CData', 'size'=>'int'],
|
||||
'FFI::memset' => ['void', '&ptr'=>'FFI\CData', 'value'=>'int', 'size'=>'int'],
|
||||
'FFI::new' => ['FFI\CData', 'type'=>'string|FFI\CType', 'owned='=>'bool', 'persistent='=>'bool'],
|
||||
'FFI::scope' => ['FFI', 'name'=>'string'],
|
||||
'FFI::sizeof' => ['int', '&ptr'=>'FFI\CData|FFI\CType'],
|
||||
'FFI::string' => ['string', '&ptr'=>'FFI\CData', 'size='=>'int'],
|
||||
'FFI::type' => ['FFI\CType', 'type'=>'string'],
|
||||
'FFI::typeof' => ['FFI\CType', '&ptr'=>'FFI\CData'],
|
||||
'fflush' => ['bool', 'stream'=>'resource'],
|
||||
'ffmpeg_animated_gif::__construct' => ['void', 'output_file_path'=>'string', 'width'=>'int', 'height'=>'int', 'frame_rate'=>'int', 'loop_count='=>'int'],
|
||||
'ffmpeg_animated_gif::addFrame' => ['', 'frame_to_add'=>'ffmpeg_frame'],
|
||||
@@ -3474,7 +3493,7 @@ return [
|
||||
'fopen' => ['resource|false', 'filename'=>'string', 'mode'=>'string', 'use_include_path='=>'bool', 'context='=>'resource'],
|
||||
'forward_static_call' => ['mixed|false', 'callback'=>'callable', '...args='=>'mixed'],
|
||||
'forward_static_call_array' => ['mixed|false', 'callback'=>'callable', 'args'=>'list<mixed>'],
|
||||
'fpassthru' => ['int|false', 'stream'=>'resource'],
|
||||
'fpassthru' => ['int', 'stream'=>'resource'],
|
||||
'fpm_get_status' => ['array|false'],
|
||||
'fprintf' => ['int', 'stream'=>'resource', 'format'=>'string', '...values='=>'string|int|float|Stringable'],
|
||||
'fputcsv' => ['int|false', 'stream'=>'resource', 'fields'=>'array', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string'],
|
||||
@@ -3783,6 +3802,7 @@ return [
|
||||
'get_class_methods' => ['list<string>', 'object_or_class'=>'object|class-string'],
|
||||
'get_class_vars' => ['array<string,mixed>', 'class'=>'class-string'],
|
||||
'get_current_user' => ['string'],
|
||||
'get_debug_type' => ['string', 'value'=>'mixed'],
|
||||
'get_declared_classes' => ['list<class-string>'],
|
||||
'get_declared_interfaces' => ['list<class-string>'],
|
||||
'get_declared_traits' => ['list<class-string>'],
|
||||
@@ -3797,10 +3817,12 @@ return [
|
||||
'get_loaded_extensions' => ['list<string>', 'zend_extensions='=>'bool'],
|
||||
'get_magic_quotes_gpc' => ['false'],
|
||||
'get_magic_quotes_runtime' => ['false'],
|
||||
'get_mangled_object_vars' => ['array', 'object'=>'object'],
|
||||
'get_meta_tags' => ['array<string,string>', 'filename'=>'string', 'use_include_path='=>'bool'],
|
||||
'get_object_vars' => ['array<string,mixed>', 'object'=>'object'],
|
||||
'get_parent_class' => ['class-string|false', 'object_or_class='=>'object|string'],
|
||||
'get_required_files' => ['string[]'],
|
||||
'get_resource_id' => ['int', 'resource'=>'resource'],
|
||||
'get_resource_type' => ['string', 'resource'=>'resource'],
|
||||
'get_resources' => ['array<int,resource>', 'type='=>'string'],
|
||||
'getallheaders' => ['array'],
|
||||
@@ -4051,7 +4073,7 @@ return [
|
||||
'GmagickPixel::getcolorvalue' => ['float', 'color'=>'int'],
|
||||
'GmagickPixel::setcolor' => ['GmagickPixel', 'color'=>'string'],
|
||||
'GmagickPixel::setcolorvalue' => ['GmagickPixel', 'color'=>'int', 'value'=>'float'],
|
||||
'gmdate' => ['string|false', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'gmdate' => ['string', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'gmmktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'],
|
||||
'GMP::__construct' => ['void'],
|
||||
'GMP::__toString' => ['string'],
|
||||
@@ -4060,7 +4082,7 @@ return [
|
||||
'gmp_abs' => ['GMP', 'num'=>'GMP|string|int'],
|
||||
'gmp_add' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_and' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_binomial' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_binomial' => ['GMP', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_clrbit' => ['void', 'num'=>'GMP', 'index'=>'int'],
|
||||
'gmp_cmp' => ['int', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_com' => ['GMP', 'num'=>'GMP|string|int'],
|
||||
@@ -4069,12 +4091,12 @@ return [
|
||||
'gmp_div_qr' => ['array<int,GMP>', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int', 'rounding_mode='=>'int'],
|
||||
'gmp_div_r' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int', 'rounding_mode='=>'int'],
|
||||
'gmp_divexact' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_export' => ['string|false', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_export' => ['string', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_fact' => ['GMP', 'num'=>'int'],
|
||||
'gmp_gcd' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_gcdext' => ['array<string,GMP>', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_hamdist' => ['int', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_import' => ['GMP|false', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_import' => ['GMP', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_init' => ['GMP', 'num'=>'int|string', 'base='=>'int'],
|
||||
'gmp_intval' => ['int', 'num'=>'GMP|string|int'],
|
||||
'gmp_invert' => ['GMP|false', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
@@ -4093,10 +4115,9 @@ return [
|
||||
'gmp_pow' => ['GMP', 'num'=>'GMP|string|int', 'exponent'=>'int'],
|
||||
'gmp_powm' => ['GMP', 'num'=>'GMP|string|int', 'exponent'=>'GMP|string|int', 'modulus'=>'GMP|string|int'],
|
||||
'gmp_prob_prime' => ['int', 'num'=>'GMP|string|int', 'repetitions='=>'int'],
|
||||
'gmp_random' => ['GMP', 'limiter='=>'int'],
|
||||
'gmp_random_bits' => ['GMP', 'bits'=>'int'],
|
||||
'gmp_random_range' => ['GMP', 'min'=>'GMP|string|int', 'max'=>'GMP|string|int'],
|
||||
'gmp_random_seed' => ['void|false', 'seed'=>'GMP|string|int'],
|
||||
'gmp_random_seed' => ['void', 'seed'=>'GMP|string|int'],
|
||||
'gmp_root' => ['GMP', 'num'=>'GMP|string|int', 'nth'=>'int'],
|
||||
'gmp_rootrem' => ['array<int,GMP>', 'num'=>'GMP|string|int', 'nth'=>'int'],
|
||||
'gmp_scan0' => ['int', 'num1'=>'GMP|string|int', 'start'=>'int'],
|
||||
@@ -4449,7 +4470,7 @@ return [
|
||||
'Grpc\ChannelCredentials::createComposite' => ['Grpc\ChannelCredentials', 'cred1'=>'Grpc\ChannelCredentials', 'cred2'=>'Grpc\CallCredentials'],
|
||||
'Grpc\ChannelCredentials::createDefault' => ['Grpc\ChannelCredentials'],
|
||||
'Grpc\ChannelCredentials::createInsecure' => ['null'],
|
||||
'Grpc\ChannelCredentials::createSsl' => ['Grpc\ChannelCredentials', 'pem_root_certs'=>'string', 'pem_private_key='=>'string', 'pem_cert_chain='=>'string'],
|
||||
'Grpc\ChannelCredentials::createSsl' => ['Grpc\ChannelCredentials', 'pem_root_certs='=>'string|null', 'pem_private_key='=>'string|null', 'pem_cert_chain='=>'string|null'],
|
||||
'Grpc\ChannelCredentials::invalidateDefaultRootsPem' => [''],
|
||||
'Grpc\ChannelCredentials::isDefaultRootsPemSet' => [''],
|
||||
'Grpc\ChannelCredentials::setDefaultRootsPem' => ['', 'pem_roots'=>'string'],
|
||||
@@ -4517,10 +4538,9 @@ return [
|
||||
'gzfile' => ['list<string>', 'filename'=>'string', 'use_include_path='=>'int'],
|
||||
'gzgetc' => ['string|false', 'stream'=>'resource'],
|
||||
'gzgets' => ['string|false', 'stream'=>'resource', 'length='=>'int'],
|
||||
'gzgetss' => ['string|false', 'zp'=>'resource', 'length'=>'int', 'allowable_tags='=>'string'],
|
||||
'gzinflate' => ['string|false', 'data'=>'string', 'max_length='=>'int'],
|
||||
'gzopen' => ['resource|false', 'filename'=>'string', 'mode'=>'string', 'use_include_path='=>'int'],
|
||||
'gzpassthru' => ['int|false', 'stream'=>'resource'],
|
||||
'gzpassthru' => ['int', 'stream'=>'resource'],
|
||||
'gzputs' => ['int', 'stream'=>'resource', 'data'=>'string', 'length='=>'int'],
|
||||
'gzread' => ['string', 'stream'=>'resource', 'length'=>'int'],
|
||||
'gzrewind' => ['bool', 'stream'=>'resource'],
|
||||
@@ -4698,7 +4718,7 @@ return [
|
||||
'hash_equals' => ['bool', 'known_string'=>'string', 'user_string'=>'string'],
|
||||
'hash_file' => ['string', 'algo'=>'string', 'filename'=>'string', 'binary='=>'bool'],
|
||||
'hash_final' => ['string', 'context'=>'HashContext', 'binary='=>'bool'],
|
||||
'hash_hkdf' => ['string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'hash_hkdf' => ['string', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'hash_hmac' => ['string', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'binary='=>'bool'],
|
||||
'hash_hmac_algos' => ['list<string>'],
|
||||
'hash_hmac_file' => ['string', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'binary='=>'bool'],
|
||||
@@ -5776,116 +5796,117 @@ return [
|
||||
'iis_start_service' => ['int', 'service_id'=>'string'],
|
||||
'iis_stop_server' => ['int', 'server_instance'=>'int'],
|
||||
'iis_stop_service' => ['int', 'service_id'=>'string'],
|
||||
'image2wbmp' => ['bool', 'im'=>'resource', 'filename='=>'?string', 'threshold='=>'int'],
|
||||
'image_type_to_extension' => ['string', 'image_type'=>'int', 'include_dot='=>'bool'],
|
||||
'image_type_to_mime_type' => ['string', 'image_type'=>'int'],
|
||||
'imageaffine' => ['resource|false', 'image'=>'resource', 'affine'=>'array', 'clip='=>'array'],
|
||||
'imageaffine' => ['false|GdImage', 'image'=>'GdImage', 'affine'=>'array', 'clip='=>'array'],
|
||||
'imageaffineconcat' => ['array|false', 'm1'=>'array', 'm2'=>'array'],
|
||||
'imageaffinematrixconcat' => ['array{0:float,1:float,2:float,3:float,4:float,5:float}|false', 'matrix1'=>'array', 'matrix2'=>'array'],
|
||||
'imageaffinematrixget' => ['array{0:float,1:float,2:float,3:float,4:float,5:float}|false', 'type'=>'int', 'options'=>'array|float'],
|
||||
'imagealphablending' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imageantialias' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imagearc' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
'imagebmp' => ['bool', 'image'=>'resource', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagechar' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecharup' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecolorallocate' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorallocatealpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorat' => ['int|false', 'image'=>'resource', 'x'=>'int', 'y'=>'int'],
|
||||
'imagecolorclosest' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorclosestalpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorclosesthwb' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolordeallocate' => ['bool', 'image'=>'resource', 'color'=>'int'],
|
||||
'imagecolorexact' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorexactalpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolormatch' => ['bool', 'image1'=>'resource', 'image2'=>'resource'],
|
||||
'imagecolorresolve' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorresolvealpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorset' => ['void', 'image'=>'resource', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
'imagecolorsforindex' => ['array<string,int>|false', 'image'=>'resource', 'color'=>'int'],
|
||||
'imagecolorstotal' => ['int|false', 'image'=>'resource'],
|
||||
'imagecolortransparent' => ['int|false', 'image'=>'resource', 'color='=>'int'],
|
||||
'imageconvolution' => ['bool', 'image'=>'resource', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
'imagecopy' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopymerge' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopymergegray' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopyresampled' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopyresized' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecreate' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgd' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgd2' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgd2part' => ['resource|false', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefromgif' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromjpeg' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefrompng' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromstring' => ['resource|false', 'data'=>'string'],
|
||||
'imagecreatefromwbmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromwebp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromxbm' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromxpm' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatetruecolor' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecrop' => ['resource|false', 'image'=>'resource', 'rectangle'=>'array'],
|
||||
'imagecropauto' => ['resource|false', 'image'=>'resource', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
'imagedashedline' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagedestroy' => ['bool', 'image'=>'resource'],
|
||||
'imageellipse' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefill' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagefilledarc' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
'imagefilledellipse' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefilledpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagefilledrectangle' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagefilltoborder' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
'imagefilter' => ['bool', 'image'=>'resource', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
'imageflip' => ['bool', 'image'=>'resource', 'mode'=>'int'],
|
||||
'imagealphablending' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imageantialias' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imagearc' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
'imagebmp' => ['bool', 'image'=>'GdImage', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagechar' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecharup' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecolorallocate' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorallocatealpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorat' => ['int|false', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int'],
|
||||
'imagecolorclosest' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorclosestalpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorclosesthwb' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolordeallocate' => ['bool', 'image'=>'GdImage', 'color'=>'int'],
|
||||
'imagecolorexact' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorexactalpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolormatch' => ['bool', 'image1'=>'GdImage', 'image2'=>'GdImage'],
|
||||
'imagecolorresolve' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorresolvealpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorset' => ['void', 'image'=>'GdImage', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
'imagecolorsforindex' => ['array<string,int>|false', 'image'=>'GdImage', 'color'=>'int'],
|
||||
'imagecolorstotal' => ['int', 'image'=>'GdImage'],
|
||||
'imagecolortransparent' => ['int|null', 'image'=>'GdImage', 'color='=>'int'],
|
||||
'imageconvolution' => ['bool', 'image'=>'GdImage', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
'imagecopy' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopymerge' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopymergegray' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopyresampled' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopyresized' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecreate' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefrombmp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgd' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgd2' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgd2part' => ['false|GdImage', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefromgif' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromjpeg' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefrompng' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromstring' => ['false|GdImage', 'data'=>'string'],
|
||||
'imagecreatefromtga' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromwbmp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromwebp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromxbm' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromxpm' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatetruecolor' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecrop' => ['false|GdImage', 'image'=>'GdImage', 'rectangle'=>'array'],
|
||||
'imagecropauto' => ['false|GdImage', 'image'=>'GdImage', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
'imagedashedline' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagedestroy' => ['bool', 'image'=>'GdImage'],
|
||||
'imageellipse' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefill' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagefilledarc' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
'imagefilledellipse' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefilledpolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagefilledrectangle' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagefilltoborder' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
'imagefilter' => ['bool', 'image'=>'GdImage', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
'imageflip' => ['bool', 'image'=>'GdImage', 'mode'=>'int'],
|
||||
'imagefontheight' => ['int', 'font'=>'int'],
|
||||
'imagefontwidth' => ['int', 'font'=>'int'],
|
||||
'imageftbbox' => ['array<int,int>|false', 'size'=>'float', 'angle'=>'float', 'font_filename'=>'string', 'string'=>'string', 'options='=>'array'],
|
||||
'imagefttext' => ['array<int,int>|false', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagegammacorrect' => ['bool', 'image'=>'resource', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
'imagegd' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'imagegd2' => ['bool', 'image'=>'resource', 'file='=>'?string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
'imagegetclip' => ['array<int,int>|false', 'image'=>'resource'],
|
||||
'imagegif' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'imagegrabscreen' => ['false|resource'],
|
||||
'imagegrabwindow' => ['false|resource', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
'imageinterlace' => ['int|false', 'image'=>'resource', 'enable='=>'?bool'],
|
||||
'imageistruecolor' => ['bool', 'image'=>'resource'],
|
||||
'imagejpeg' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagelayereffect' => ['bool', 'image'=>'resource', 'effect'=>'int'],
|
||||
'imageline' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagefttext' => ['array<int,int>|false', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagegammacorrect' => ['bool', 'image'=>'GdImage', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
'imagegd' => ['bool', 'image'=>'GdImage', 'file='=>'string'],
|
||||
'imagegd2' => ['bool', 'image'=>'GdImage', 'file='=>'string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
'imagegetclip' => ['array<int,int>', 'image'=>'GdImage'],
|
||||
'imagegetinterpolation' => ['int', 'image'=>'GdImage'],
|
||||
'imagegif' => ['bool', 'image'=>'GdImage', 'file='=>'?string'],
|
||||
'imagegrabscreen' => ['false|GdImage'],
|
||||
'imagegrabwindow' => ['false|GdImage', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
'imageinterlace' => ['int', 'image'=>'GdImage', 'enable='=>'?bool'],
|
||||
'imageistruecolor' => ['bool', 'image'=>'GdImage'],
|
||||
'imagejpeg' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagelayereffect' => ['bool', 'image'=>'GdImage', 'effect'=>'int'],
|
||||
'imageline' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageloadfont' => ['int|false', 'filename'=>'string'],
|
||||
'imageObj::pasteImage' => ['void', 'srcImg'=>'imageObj', 'transparentColorHex'=>'int', 'dstX'=>'int', 'dstY'=>'int', 'angle'=>'int'],
|
||||
'imageObj::saveImage' => ['int', 'filename'=>'string', 'oMap'=>'mapObj'],
|
||||
'imageObj::saveWebImage' => ['string'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagepalettecopy' => ['void', 'dst'=>'resource', 'src'=>'resource'],
|
||||
'imagepalettetotruecolor' => ['bool', 'image'=>'resource'],
|
||||
'imagepng' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
'imagepolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagerectangle' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'resource', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagerotate' => ['resource|false', 'image'=>'resource', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
'imagesavealpha' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imagescale' => ['resource|false', 'image'=>'resource', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
'imagesetbrush' => ['bool', 'image'=>'resource', 'brush'=>'resource'],
|
||||
'imagesetclip' => ['bool', 'image'=>'resource', 'x1'=>'int', 'x2'=>'int', 'y1'=>'int', 'y2'=>'int'],
|
||||
'imagesetinterpolation' => ['bool', 'image'=>'resource', 'method='=>'int'],
|
||||
'imagesetpixel' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagesetstyle' => ['bool', 'image'=>'resource', 'style'=>'non-empty-array'],
|
||||
'imagesetthickness' => ['bool', 'image'=>'resource', 'thickness'=>'int'],
|
||||
'imagesettile' => ['bool', 'image'=>'resource', 'tile'=>'resource'],
|
||||
'imagestring' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagestringup' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagesx' => ['int|false', 'image'=>'resource'],
|
||||
'imagesy' => ['int|false', 'image'=>'resource'],
|
||||
'imagetruecolortopalette' => ['bool', 'image'=>'resource', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagepalettecopy' => ['void', 'dst'=>'GdImage', 'src'=>'GdImage'],
|
||||
'imagepalettetotruecolor' => ['bool', 'image'=>'GdImage'],
|
||||
'imagepng' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
'imagepolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagerectangle' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'GdImage', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagerotate' => ['false|GdImage', 'image'=>'GdImage', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
'imagesavealpha' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imagescale' => ['false|GdImage', 'image'=>'GdImage', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
'imagesetbrush' => ['bool', 'image'=>'GdImage', 'brush'=>'GdImage'],
|
||||
'imagesetclip' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'],
|
||||
'imagesetinterpolation' => ['bool', 'image'=>'GdImage', 'method='=>'int'],
|
||||
'imagesetpixel' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagesetstyle' => ['bool', 'image'=>'GdImage', 'style'=>'non-empty-array'],
|
||||
'imagesetthickness' => ['bool', 'image'=>'GdImage', 'thickness'=>'int'],
|
||||
'imagesettile' => ['bool', 'image'=>'GdImage', 'tile'=>'GdImage'],
|
||||
'imagestring' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagestringup' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagesx' => ['int', 'image'=>'GdImage'],
|
||||
'imagesy' => ['int', 'image'=>'GdImage'],
|
||||
'imagetruecolortopalette' => ['bool', 'image'=>'GdImage', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
'imagettfbbox' => ['false|array<int,int>', 'size'=>'float', 'angle'=>'float', 'font_filename'=>'string', 'string'=>'string', 'options='=>'array'],
|
||||
'imagettftext' => ['false|array<int,int>', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagettftext' => ['false|array<int,int>', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagetypes' => ['int'],
|
||||
'imagewbmp' => ['bool', 'image'=>'resource', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
'imagewebp' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagexbm' => ['bool', 'image'=>'resource', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
'imagewbmp' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
'imagewebp' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagexbm' => ['bool', 'image'=>'GdImage', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
'Imagick::__construct' => ['void', 'files='=>'string|string[]'],
|
||||
'Imagick::__toString' => ['string'],
|
||||
'Imagick::adaptiveBlurImage' => ['bool', 'radius'=>'float', 'sigma'=>'float', 'channel='=>'int'],
|
||||
@@ -6485,7 +6506,7 @@ return [
|
||||
'imap_mail_compose' => ['string|false', 'envelope'=>'array', 'bodies'=>'array'],
|
||||
'imap_mail_copy' => ['bool', 'imap'=>'resource', 'message_nums'=>'string', 'mailbox'=>'string', 'flags='=>'int'],
|
||||
'imap_mail_move' => ['bool', 'imap'=>'resource', 'message_nums'=>'string', 'mailbox'=>'string', 'flags='=>'int'],
|
||||
'imap_mailboxmsginfo' => ['stdClass|false', 'imap'=>'resource'],
|
||||
'imap_mailboxmsginfo' => ['stdClass', 'imap'=>'resource'],
|
||||
'imap_mime_header_decode' => ['array|false', 'string'=>'string'],
|
||||
'imap_msgno' => ['int|false', 'imap'=>'resource', 'message_uid'=>'int'],
|
||||
'imap_mutf7_to_utf8' => ['string|false', 'string'=>'string'],
|
||||
@@ -6533,10 +6554,10 @@ return [
|
||||
'InfiniteIterator::next' => ['void'],
|
||||
'InfiniteIterator::rewind' => ['void'],
|
||||
'InfiniteIterator::valid' => ['bool'],
|
||||
'inflate_add' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'inflate_get_read_len' => ['int|false', 'context'=>'resource'],
|
||||
'inflate_get_status' => ['int|false', 'context'=>'resource'],
|
||||
'inflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'inflate_add' => ['string|false', 'context'=>'InflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'inflate_get_read_len' => ['int', 'context'=>'InflateContext'],
|
||||
'inflate_get_status' => ['int', 'context'=>'InflateContext'],
|
||||
'inflate_init' => ['InflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'ingres_autocommit' => ['bool', 'link'=>'resource'],
|
||||
'ingres_autocommit_state' => ['bool', 'link'=>'resource'],
|
||||
'ingres_charset' => ['string', 'link'=>'resource'],
|
||||
@@ -7028,7 +7049,6 @@ return [
|
||||
'jobqueue_license_info' => ['array'],
|
||||
'join' => ['string', 'separator'=>'string', 'array'=>'array'],
|
||||
'join\'1' => ['string', 'separator'=>'array'],
|
||||
'jpeg2wbmp' => ['bool', 'jpegname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'json_decode' => ['mixed', 'json'=>'string', 'associative='=>'bool', 'depth='=>'int', 'flags='=>'int'],
|
||||
'json_encode' => ['string|false', 'value'=>'mixed', 'flags='=>'int', 'depth='=>'int'],
|
||||
'json_last_error' => ['int'],
|
||||
@@ -7208,7 +7228,7 @@ return [
|
||||
'ldap_connect' => ['resource|false', 'uri='=>'string', 'port='=>'int', 'wallet='=>'string', 'password='=>'string', 'auth_mode='=>'int'],
|
||||
'ldap_control_paged_result' => ['bool', 'link_identifier'=>'resource', 'pagesize'=>'int', 'iscritical='=>'bool', 'cookie='=>'string'],
|
||||
'ldap_control_paged_result_response' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', '&w_cookie'=>'string', '&w_estimated'=>'int'],
|
||||
'ldap_count_entries' => ['int|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_count_entries' => ['int', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_delete' => ['bool', 'ldap'=>'resource', 'dn'=>'string'],
|
||||
'ldap_delete_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'controls='=>'array'],
|
||||
'ldap_dn2ufn' => ['string', 'dn'=>'string'],
|
||||
@@ -7224,8 +7244,8 @@ return [
|
||||
'ldap_first_attribute' => ['string|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_first_entry' => ['resource|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_first_reference' => ['resource|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_free_result' => ['bool', 'ldap'=>'resource'],
|
||||
'ldap_get_attributes' => ['array|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_free_result' => ['bool', 'result'=>'resource'],
|
||||
'ldap_get_attributes' => ['array', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_get_dn' => ['string|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_get_entries' => ['array|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_get_option' => ['bool', 'ldap'=>'resource', 'option'=>'int', '&w_value='=>'array|int|string'],
|
||||
@@ -7241,7 +7261,7 @@ return [
|
||||
'ldap_modify' => ['bool', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array'],
|
||||
'ldap_modify_batch' => ['bool', 'ldap'=>'resource', 'dn'=>'string', 'modifications_info'=>'array'],
|
||||
'ldap_next_attribute' => ['string|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_next_entry' => ['resource|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_next_entry' => ['resource|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_next_reference' => ['resource|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_parse_exop' => ['bool', 'ldap'=>'resource', 'result'=>'resource', '&w_response_data='=>'string', '&w_response_oid='=>'string'],
|
||||
'ldap_parse_reference' => ['bool', 'ldap'=>'resource', 'entry'=>'resource', '&referrals'=>'array'],
|
||||
@@ -7253,7 +7273,6 @@ return [
|
||||
'ldap_search' => ['resource|false', 'ldap'=>'resource|resource[]', 'base'=>'string', 'filter'=>'string', 'attributes='=>'array', 'attributes_only='=>'int', 'sizelimit='=>'int', 'timelimit='=>'int', 'deref='=>'int'],
|
||||
'ldap_set_option' => ['bool', 'ldap'=>'resource', 'option'=>'int', 'value'=>'array|bool|int|string'],
|
||||
'ldap_set_rebind_proc' => ['bool', 'ldap'=>'resource', 'callback'=>'?callable'],
|
||||
'ldap_sort' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', 'sortfilter'=>'string'],
|
||||
'ldap_start_tls' => ['bool', 'ldap'=>'resource'],
|
||||
'ldap_t61_to_8859' => ['string', 'value'=>'string'],
|
||||
'ldap_unbind' => ['bool', 'ldap'=>'resource'],
|
||||
@@ -7719,18 +7738,18 @@ return [
|
||||
'MaxMind\Db\Reader\Metadata::__construct' => ['void', 'metadata'=>'array'],
|
||||
'mb_check_encoding' => ['bool', 'value='=>'string', 'encoding='=>'string'],
|
||||
'mb_chr' => ['string|false', 'codepoint'=>'int', 'encoding='=>'string'],
|
||||
'mb_convert_case' => ['string|false', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
'mb_convert_case' => ['string', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
'mb_convert_encoding' => ['string|false', 'string'=>'string', 'to_encoding'=>'string', 'from_encoding='=>'string|string[]'],
|
||||
'mb_convert_kana' => ['string|false', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
'mb_convert_kana' => ['string', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
'mb_convert_variables' => ['string|false', 'to_encoding'=>'string', 'from_encoding'=>'array|string', '&rw_var'=>'string|array|object', '&...rw_vars='=>'string|array|object'],
|
||||
'mb_decode_mimeheader' => ['string', 'string'=>'string'],
|
||||
'mb_decode_numericentity' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'is_hex='=>'bool'],
|
||||
'mb_decode_numericentity' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string'],
|
||||
'mb_detect_encoding' => ['string|false', 'string'=>'string', 'encodings='=>'?string[]|?string', 'strict='=>'bool'],
|
||||
'mb_detect_order' => ['bool|list<string>', 'encoding='=>'?string[]|?string'],
|
||||
'mb_encode_mimeheader' => ['string|false', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
'mb_encode_numericentity' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
'mb_encoding_aliases' => ['list<string>|false', 'encoding'=>'string'],
|
||||
'mb_ereg' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_encode_mimeheader' => ['string', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
'mb_encode_numericentity' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
'mb_encoding_aliases' => ['list<string>', 'encoding'=>'string'],
|
||||
'mb_ereg' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_ereg_match' => ['bool', 'pattern'=>'string', 'string'=>'string', 'options='=>'string'],
|
||||
'mb_ereg_replace' => ['string|false', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string', 'options='=>'string'],
|
||||
'mb_ereg_replace_callback' => ['string|false', 'pattern'=>'string', 'callback'=>'callable', 'string'=>'string', 'options='=>'string'],
|
||||
@@ -7741,7 +7760,7 @@ return [
|
||||
'mb_ereg_search_pos' => ['array<int,int>|false', 'pattern='=>'string', 'options='=>'string'],
|
||||
'mb_ereg_search_regs' => ['array<int,bool|string>|false', 'pattern='=>'string', 'options='=>'string'],
|
||||
'mb_ereg_search_setpos' => ['bool', 'offset'=>'int'],
|
||||
'mb_eregi' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_eregi' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_eregi_replace' => ['string|false', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string', 'options='=>'string'],
|
||||
'mb_get_info' => ['array[]|false|int|int[]|string|string[]', 'type='=>'string'],
|
||||
'mb_http_input' => ['string|false', 'type='=>'string'],
|
||||
@@ -7755,26 +7774,26 @@ return [
|
||||
'mb_preferred_mime_name' => ['string|false', 'encoding'=>'string'],
|
||||
'mb_regex_encoding' => ['string|bool', 'encoding='=>'string'],
|
||||
'mb_regex_set_options' => ['string', 'options='=>'string'],
|
||||
'mb_scrub' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_scrub' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_send_mail' => ['bool', 'to'=>'string', 'subject'=>'string', 'message'=>'string', 'additional_headers='=>'string', 'additional_params='=>'string'],
|
||||
'mb_split' => ['list<string>', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'],
|
||||
'mb_strcut' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
'mb_strimwidth' => ['string|false', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
'mb_strcut' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
'mb_strimwidth' => ['string', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
'mb_stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'],
|
||||
'mb_stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool', 'encoding='=>'string'],
|
||||
'mb_strlen' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strlen' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'],
|
||||
'mb_strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool', 'encoding='=>'string'],
|
||||
'mb_strrichr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool', 'encoding='=>'string'],
|
||||
'mb_strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'],
|
||||
'mb_strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'encoding='=>'string'],
|
||||
'mb_strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool', 'encoding='=>'string'],
|
||||
'mb_strtolower' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtoupper' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strwidth' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtolower' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtoupper' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strwidth' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_substitute_character' => ['bool|int|string', 'substitute_character='=>'?int|?string'],
|
||||
'mb_substr' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
'mb_substr_count' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
'mb_substr' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
'mb_substr_count' => ['int', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
'mcrypt_cbc' => ['string', 'cipher'=>'string|int', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'],
|
||||
'mcrypt_cfb' => ['string', 'cipher'=>'string|int', 'key'=>'string', 'data'=>'string', 'mode'=>'int', 'iv='=>'string'],
|
||||
'mcrypt_create_iv' => ['string|false', 'size'=>'int', 'source='=>'int'],
|
||||
@@ -8690,13 +8709,12 @@ return [
|
||||
'msession_timeout' => ['int', 'session'=>'string', 'param='=>'int'],
|
||||
'msession_uniq' => ['string', 'param'=>'int', 'classname='=>'string', 'data='=>'string'],
|
||||
'msession_unlock' => ['int', 'session'=>'string', 'key'=>'int'],
|
||||
'msg_get_queue' => ['resource', 'key'=>'int', 'permissions='=>'int'],
|
||||
'msg_get_queue' => ['SysvMessageQueue', 'key'=>'int', 'permissions='=>'int'],
|
||||
'msg_queue_exists' => ['bool', 'key'=>'int'],
|
||||
'msg_receive' => ['bool', 'queue'=>'resource', 'desired_message_type'=>'int', '&w_received_message_type'=>'int', 'max_message_size'=>'int', '&w_message'=>'mixed', 'unserialize='=>'bool', 'flags='=>'int', '&w_error_code='=>'int'],
|
||||
'msg_remove_queue' => ['bool', 'queue'=>'resource'],
|
||||
'msg_send' => ['bool', 'queue'=>'resource', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
'msg_set_queue' => ['bool', 'queue'=>'resource', 'data'=>'array'],
|
||||
'msg_stat_queue' => ['array', 'queue'=>'resource'],
|
||||
'msg_remove_queue' => ['bool', 'queue'=>'SysvMessageQueue'],
|
||||
'msg_send' => ['bool', 'queue'=>'SysvMessageQueue', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
'msg_set_queue' => ['bool', 'queue'=>'SysvMessageQueue', 'data'=>'array'],
|
||||
'msg_stat_queue' => ['array', 'queue'=>'SysvMessageQueue'],
|
||||
'msgfmt_create' => ['MessageFormatter', 'locale'=>'string', 'pattern'=>'string'],
|
||||
'msgfmt_format' => ['string|false', 'formatter'=>'MessageFormatter', 'values'=>'array'],
|
||||
'msgfmt_format_message' => ['string|false', 'locale'=>'string', 'pattern'=>'string', 'values'=>'array'],
|
||||
@@ -8950,7 +8968,7 @@ return [
|
||||
'mysqli::next_result' => ['bool'],
|
||||
'mysqli::options' => ['bool', 'option'=>'int', 'value'=>'mixed'],
|
||||
'mysqli::ping' => ['bool'],
|
||||
'mysqli::poll' => ['int|false', '&w_read'=>'array', '&w_write'=>'array', '&w_error'=>'array', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'mysqli::poll' => ['int|false', '&w_read'=>'array', '&w_error'=>'array', '&w_reject'=>'array', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'mysqli::prepare' => ['mysqli_stmt|false', 'query'=>'string'],
|
||||
'mysqli::query' => ['bool|mysqli_result', 'query'=>'string', 'result_mode='=>'int'],
|
||||
'mysqli::real_connect' => ['bool', 'hostname='=>'?string', 'username='=>'string', 'password='=>'?string', 'database='=>'string', 'port='=>'int', 'socket='=>'string', 'flags='=>'int'],
|
||||
@@ -9009,7 +9027,7 @@ return [
|
||||
'mysqli_fetch_assoc' => ['array<string,string>|null', 'result'=>'mysqli_result'],
|
||||
'mysqli_fetch_field' => ['object|false', 'result'=>'mysqli_result'],
|
||||
'mysqli_fetch_field_direct' => ['object|false', 'result'=>'mysqli_result', 'index'=>'int'],
|
||||
'mysqli_fetch_fields' => ['?array<int,object>', 'result'=>'mysqli_result'],
|
||||
'mysqli_fetch_fields' => ['array<int,object>', 'result'=>'mysqli_result'],
|
||||
'mysqli_fetch_lengths' => ['array<int,int>|false', 'result'=>'mysqli_result'],
|
||||
'mysqli_fetch_object' => ['?object', 'result'=>'mysqli_result', 'class='=>'string', 'constructor_args='=>'array'],
|
||||
'mysqli_fetch_row' => ['?array<int,mixed>', 'result'=>'mysqli_result'],
|
||||
@@ -9020,9 +9038,9 @@ return [
|
||||
'mysqli_get_cache_stats' => ['array|false'],
|
||||
'mysqli_get_charset' => ['object', 'mysql'=>'mysqli'],
|
||||
'mysqli_get_client_info' => ['string', 'mysql='=>'mysqli'],
|
||||
'mysqli_get_client_stats' => ['array|false'],
|
||||
'mysqli_get_client_stats' => ['array'],
|
||||
'mysqli_get_client_version' => ['int', 'link'=>'mysqli'],
|
||||
'mysqli_get_connection_stats' => ['array|false', 'mysql'=>'mysqli'],
|
||||
'mysqli_get_connection_stats' => ['array', 'mysql'=>'mysqli'],
|
||||
'mysqli_get_host_info' => ['string', 'mysql'=>'mysqli'],
|
||||
'mysqli_get_links_stats' => ['array<string,int>'],
|
||||
'mysqli_get_metadata' => ['mysqli_result|false', 'stmt'=>'mysqli_stmt'],
|
||||
@@ -9044,7 +9062,7 @@ return [
|
||||
'mysqli_options' => ['bool', 'mysql'=>'mysqli', 'option'=>'int', 'value'=>'int|string'],
|
||||
'mysqli_param_count' => ['int', 'stmt'=>'mysqli_stmt'],
|
||||
'mysqli_ping' => ['bool', 'mysql'=>'mysqli'],
|
||||
'mysqli_poll' => ['int|false', '&read'=>'array', '&write'=>'array', '&error'=>'array', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'mysqli_poll' => ['int|false', '&read'=>'array', '&error'=>'array', '&reject'=>'array', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'mysqli_prepare' => ['mysqli_stmt|false', 'mysql'=>'mysqli', 'query'=>'string'],
|
||||
'mysqli_query' => ['mysqli_result|bool', 'mysql'=>'mysqli', 'query'=>'string', 'result_mode='=>'int'],
|
||||
'mysqli_real_connect' => ['bool', 'mysql'=>'mysqli', 'hostname='=>'?string', 'username='=>'string', 'password='=>'?string', 'database='=>'string', 'port='=>'int', 'socket='=>'string', 'flags='=>'int'],
|
||||
@@ -9107,7 +9125,7 @@ return [
|
||||
'mysqli_stmt::stmt' => [''],
|
||||
'mysqli_stmt::store_result' => ['bool'],
|
||||
'mysqli_stmt_affected_rows' => ['int|string', 'statement'=>'mysqli_stmt'],
|
||||
'mysqli_stmt_attr_get' => ['int|false', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
'mysqli_stmt_attr_get' => ['int', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
'mysqli_stmt_attr_set' => ['bool', 'statement'=>'mysqli_stmt', 'attribute'=>'int', 'value'=>'int'],
|
||||
'mysqli_stmt_bind_param' => ['bool', 'statement'=>'mysqli_stmt', 'types'=>'string', '&vars'=>'mixed', '&...args='=>'mixed'],
|
||||
'mysqli_stmt_bind_result' => ['bool', 'statement'=>'mysqli_stmt', '&vars='=>'mixed', '&...args='=>'mixed'],
|
||||
@@ -9580,7 +9598,7 @@ return [
|
||||
'NumberFormatter::setPattern' => ['bool', 'pattern'=>'string'],
|
||||
'NumberFormatter::setSymbol' => ['bool', 'symbol'=>'int', 'value'=>'string'],
|
||||
'NumberFormatter::setTextAttribute' => ['bool', 'attribute'=>'int', 'value'=>'string'],
|
||||
'numfmt_create' => ['NumberFormatter|false', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
'numfmt_create' => ['NumberFormatter|null', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
'numfmt_format' => ['string|false', 'formatter'=>'NumberFormatter', 'num'=>'int|float', 'type='=>'int'],
|
||||
'numfmt_format_currency' => ['string|false', 'formatter'=>'NumberFormatter', 'amount'=>'float', 'currency'=>'string'],
|
||||
'numfmt_get_attribute' => ['int|false', 'formatter'=>'NumberFormatter', 'attribute'=>'int'],
|
||||
@@ -9655,7 +9673,7 @@ return [
|
||||
'ob_get_status' => ['array', 'full_status='=>'bool'],
|
||||
'ob_gzhandler' => ['string|false', 'data'=>'string', 'flags'=>'int'],
|
||||
'ob_iconv_handler' => ['string', 'contents'=>'string', 'status'=>'int'],
|
||||
'ob_implicit_flush' => ['void', 'enable='=>'int'],
|
||||
'ob_implicit_flush' => ['void', 'enable='=>'bool'],
|
||||
'ob_inflatehandler' => ['string', 'data'=>'string', 'mode'=>'int'],
|
||||
'ob_list_handlers' => ['list<string>'],
|
||||
'ob_start' => ['bool', 'callback='=>'?callable', 'chunk_size='=>'int', 'flags='=>'int'],
|
||||
@@ -9665,28 +9683,20 @@ return [
|
||||
'oci_cancel' => ['bool', 'statement'=>'resource'],
|
||||
'oci_client_version' => ['string'],
|
||||
'oci_close' => ['bool', 'connection'=>'resource'],
|
||||
'OCICollection::append' => ['bool', 'value'=>'string'],
|
||||
'OCICollection::assign' => ['bool', 'from'=>'OCICollection'],
|
||||
'OCICollection::assignElem' => ['bool', 'index'=>'int', 'value'=>'string'],
|
||||
'OCICollection::free' => ['bool'],
|
||||
'OCICollection::getElem' => ['false|float|null|string', 'index'=>'int'],
|
||||
'OCICollection::max' => ['int|false'],
|
||||
'OCICollection::size' => ['int|false'],
|
||||
'OCICollection::trim' => ['bool', 'num'=>'int'],
|
||||
'oci_collection_append' => ['bool', 'collection'=>'resource', 'value'=>'string'],
|
||||
'oci_collection_assign' => ['bool', 'to'=>'resource', 'from'=>'object'],
|
||||
'oci_collection_element_assign' => ['bool', 'collection'=>'resource', 'index'=>'int', 'value'=>'string'],
|
||||
'oci_collection_element_get' => ['string', 'collection'=>'resource', 'index'=>'int'],
|
||||
'oci_collection_max' => ['int', 'collection'=>'resource'],
|
||||
'oci_collection_size' => ['int', 'collection'=>'resource'],
|
||||
'oci_collection_trim' => ['bool', 'collection'=>'resource', 'num'=>'int'],
|
||||
'oci_collection_append' => ['bool', 'collection'=>'OCICollection', 'value'=>'string'],
|
||||
'oci_collection_assign' => ['bool', 'to'=>'OCICollection', 'from'=>'OCICollection'],
|
||||
'oci_collection_element_assign' => ['bool', 'collection'=>'OCICollection', 'index'=>'int', 'value'=>'string'],
|
||||
'oci_collection_element_get' => ['string', 'collection'=>'OCICollection', 'index'=>'int'],
|
||||
'oci_collection_max' => ['int', 'collection'=>'OCICollection'],
|
||||
'oci_collection_size' => ['int', 'collection'=>'OCICollection'],
|
||||
'oci_collection_trim' => ['bool', 'collection'=>'OCICollection', 'num'=>'int'],
|
||||
'oci_commit' => ['bool', 'connection'=>'resource'],
|
||||
'oci_connect' => ['resource|false', 'username'=>'string', 'password'=>'string', 'connection_string='=>'string', 'encoding='=>'string', 'session_mode='=>'int'],
|
||||
'oci_define_by_name' => ['bool', 'statement'=>'resource', 'column'=>'string', '&w_var'=>'mixed', 'type='=>'int'],
|
||||
'oci_error' => ['array|false', 'connection_or_statement='=>'resource'],
|
||||
'oci_execute' => ['bool', 'statement'=>'resource', 'mode='=>'int'],
|
||||
'oci_fetch' => ['bool', 'statement'=>'resource'],
|
||||
'oci_fetch_all' => ['int|false', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
'oci_fetch_all' => ['int', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
'oci_fetch_array' => ['array|false', 'statement'=>'resource', 'mode='=>'int'],
|
||||
'oci_fetch_assoc' => ['array|false', 'statement'=>'resource'],
|
||||
'oci_fetch_object' => ['stdClass|false|null', 'statement'=>'resource', 'mode='=>'int'],
|
||||
@@ -9698,35 +9708,13 @@ return [
|
||||
'oci_field_size' => ['int|false', 'statement'=>'resource', 'column'=>'int|string'],
|
||||
'oci_field_type' => ['false|int|string', 'statement'=>'resource', 'column'=>'int|string'],
|
||||
'oci_field_type_raw' => ['int|false', 'statement'=>'resource', 'column'=>'int|string'],
|
||||
'oci_free_collection' => ['bool', 'collection'=>'resource'],
|
||||
'oci_free_collection' => ['bool', 'collection'=>'OCICollection'],
|
||||
'oci_free_cursor' => ['bool', 'statement'=>'resource'],
|
||||
'oci_free_descriptor' => ['bool', 'lob'=>'resource'],
|
||||
'oci_free_descriptor' => ['bool', 'lob'=>'OCILob'],
|
||||
'oci_free_statement' => ['bool', 'statement'=>'resource'],
|
||||
'oci_get_implicit' => ['bool', 'stmt'=>''],
|
||||
'oci_get_implicit_resultset' => ['resource|false', 'statement'=>'resource'],
|
||||
'oci_internal_debug' => ['void', 'onoff'=>'bool'],
|
||||
'OCILob::append' => ['bool', 'from'=>'OCILob'],
|
||||
'OCILob::close' => ['bool'],
|
||||
'OCILob::eof' => ['bool'],
|
||||
'OCILob::erase' => ['int|false', 'offset='=>'int', 'length='=>'int'],
|
||||
'OCILob::export' => ['bool', 'filename'=>'string', 'offset='=>'int', 'length='=>'int'],
|
||||
'OCILob::flush' => ['bool', 'flag='=>'int'],
|
||||
'OCILob::free' => ['bool'],
|
||||
'OCILob::getbuffering' => ['bool'],
|
||||
'OCILob::import' => ['bool', 'filename'=>'string'],
|
||||
'OCILob::load' => ['string|false'],
|
||||
'OCILob::read' => ['string|false', 'length'=>'int'],
|
||||
'OCILob::rewind' => ['bool'],
|
||||
'OCILob::save' => ['bool', 'data'=>'string', 'offset='=>'int'],
|
||||
'OCILob::savefile' => ['bool', 'filename'=>''],
|
||||
'OCILob::seek' => ['bool', 'offset'=>'int', 'whence='=>'int'],
|
||||
'OCILob::setbuffering' => ['bool', 'mode'=>'bool'],
|
||||
'OCILob::size' => ['int|false'],
|
||||
'OCILob::tell' => ['int|false'],
|
||||
'OCILob::truncate' => ['bool', 'length='=>'int'],
|
||||
'OCILob::write' => ['int|false', 'data'=>'string', 'length='=>'int'],
|
||||
'OCILob::writeTemporary' => ['bool', 'data'=>'string', 'type='=>'int'],
|
||||
'OCILob::writetofile' => ['bool', 'filename'=>'', 'offset='=>'', 'length='=>''],
|
||||
'oci_lob_append' => ['bool', 'to'=>'OCILob', 'from'=>'OCILob'],
|
||||
'oci_lob_close' => ['bool', 'lob'=>'OCILob'],
|
||||
'oci_lob_copy' => ['bool', 'to'=>'OCILob', 'from'=>'OCILob', 'length='=>'int'],
|
||||
@@ -9749,7 +9737,7 @@ return [
|
||||
'oci_new_collection' => ['OCICollection|false', 'connection'=>'resource', 'type_name'=>'string', 'schema='=>'string'],
|
||||
'oci_new_connect' => ['resource|false', 'username'=>'string', 'password'=>'string', 'connection_string='=>'string', 'encoding='=>'string', 'session_mode='=>'int'],
|
||||
'oci_new_cursor' => ['resource|false', 'connection'=>'resource'],
|
||||
'oci_new_descriptor' => ['OCILob|false', 'connection'=>'resource', 'type='=>'int'],
|
||||
'oci_new_descriptor' => ['?OCILob', 'connection'=>'resource', 'type='=>'int'],
|
||||
'oci_num_fields' => ['int', 'statement'=>'resource'],
|
||||
'oci_num_rows' => ['int|false', 'statement'=>'resource'],
|
||||
'oci_parse' => ['resource|false', 'connection'=>'resource', 'sql'=>'string'],
|
||||
@@ -9769,8 +9757,38 @@ return [
|
||||
'oci_set_prefetch' => ['bool', 'statement'=>'resource', 'rows'=>'int'],
|
||||
'oci_statement_type' => ['string|false', 'statement'=>'resource'],
|
||||
'oci_unregister_taf_callback' => ['bool', 'connection'=>'resource'],
|
||||
'OCICollection::append' => ['bool', 'value'=>'string'],
|
||||
'OCICollection::assign' => ['bool', 'from'=>'OCICollection'],
|
||||
'OCICollection::assignElem' => ['bool', 'index'=>'int', 'value'=>'string'],
|
||||
'OCICollection::free' => ['bool'],
|
||||
'OCICollection::getElem' => ['false|float|null|string', 'index'=>'int'],
|
||||
'OCICollection::max' => ['int|false'],
|
||||
'OCICollection::size' => ['int|false'],
|
||||
'OCICollection::trim' => ['bool', 'num'=>'int'],
|
||||
'ocifetchinto' => ['int|bool', 'statement'=>'resource', '&w_result'=>'array', 'mode='=>'int'],
|
||||
'ocigetbufferinglob' => ['bool', 'lob'=>'OCILob'],
|
||||
'OCILob::append' => ['bool', 'from'=>'OCILob'],
|
||||
'OCILob::close' => ['bool'],
|
||||
'OCILob::eof' => ['bool'],
|
||||
'OCILob::erase' => ['int|false', 'offset='=>'int', 'length='=>'int'],
|
||||
'OCILob::export' => ['bool', 'filename'=>'string', 'offset='=>'int', 'length='=>'int'],
|
||||
'OCILob::flush' => ['bool', 'flag='=>'int'],
|
||||
'OCILob::free' => ['bool'],
|
||||
'OCILob::getbuffering' => ['bool'],
|
||||
'OCILob::import' => ['bool', 'filename'=>'string'],
|
||||
'OCILob::load' => ['string|false'],
|
||||
'OCILob::read' => ['string|false', 'length'=>'int'],
|
||||
'OCILob::rewind' => ['bool'],
|
||||
'OCILob::save' => ['bool', 'data'=>'string', 'offset='=>'int'],
|
||||
'OCILob::savefile' => ['bool', 'filename'=>''],
|
||||
'OCILob::seek' => ['bool', 'offset'=>'int', 'whence='=>'int'],
|
||||
'OCILob::setbuffering' => ['bool', 'mode'=>'bool'],
|
||||
'OCILob::size' => ['int|false'],
|
||||
'OCILob::tell' => ['int|false'],
|
||||
'OCILob::truncate' => ['bool', 'length='=>'int'],
|
||||
'OCILob::write' => ['int|false', 'data'=>'string', 'length='=>'int'],
|
||||
'OCILob::writeTemporary' => ['bool', 'data'=>'string', 'type='=>'int'],
|
||||
'OCILob::writetofile' => ['bool', 'filename'=>'', 'offset='=>'', 'length='=>''],
|
||||
'ocisetbufferinglob' => ['bool', 'lob'=>'OCILob', 'mode'=>'bool'],
|
||||
'octdec' => ['int|float', 'octal_string'=>'string'],
|
||||
'odbc_autocommit' => ['bool|int', 'odbc'=>'resource', 'enable='=>'bool'],
|
||||
@@ -9850,62 +9868,63 @@ return [
|
||||
'opendir' => ['resource|false', 'directory'=>'string', 'context='=>'resource'],
|
||||
'openlog' => ['bool', 'prefix'=>'string', 'flags'=>'int', 'facility'=>'int'],
|
||||
'openssl_cipher_iv_length' => ['int|false', 'cipher_algo'=>'string'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_export_to_file' => ['bool', 'csr'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_get_public_key' => ['resource|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_csr_get_subject' => ['array|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_csr_new' => ['resource|false', 'distinguished_names'=>'array', '&w_private_key'=>'resource', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
'openssl_csr_sign' => ['resource|false', 'csr'=>'string|resource', 'ca_certificate'=>'string|resource|null', 'private_key'=>'string|resource|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', '&w_output'=>'OpenSSLAsymmetricKey', 'no_text='=>'bool'],
|
||||
'openssl_csr_export_to_file' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_get_public_key' => ['OpenSSLAsymmetricKey|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
'openssl_csr_get_subject' => ['array|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
'openssl_csr_new' => ['OpenSSLCertificateSigningRequest|false', 'distinguished_names'=>'array', '&w_private_key'=>'OpenSSLAsymmetricKey', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
'openssl_csr_sign' => ['OpenSSLCertificate|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'ca_certificate'=>'string|OpenSSLCertificate|null', 'private_key'=>'string|OpenSSLAsymmetricKey|OpenSSLCertificate|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
'openssl_decrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', 'tag='=>'string', 'aad='=>'string'],
|
||||
'openssl_dh_compute_key' => ['string|false', 'public_key'=>'string', 'private_key'=>'resource'],
|
||||
'openssl_dh_compute_key' => ['string|false', 'public_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_digest' => ['string|false', 'data'=>'string', 'digest_algo'=>'string', 'binary='=>'bool'],
|
||||
'openssl_encrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', '&w_tag='=>'string', 'aad='=>'string', 'tag_length='=>'int'],
|
||||
'openssl_error_string' => ['string|false'],
|
||||
'openssl_free_key' => ['void', 'key'=>'resource'],
|
||||
'openssl_free_key' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_get_cert_locations' => ['array'],
|
||||
'openssl_get_cipher_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_curve_names' => ['list<string>'],
|
||||
'openssl_get_md_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_privatekey' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_get_publickey' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'openssl_open' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'string|array|resource', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
'openssl_get_privatekey' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_get_publickey' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'openssl_open' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
'openssl_pbkdf2' => ['string|false', 'password'=>'string', 'salt'=>'string', 'key_length'=>'int', 'iterations'=>'int', 'digest_algo='=>'string'],
|
||||
'openssl_pkcs12_export' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_export_to_file' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_export' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_export_to_file' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_read' => ['bool', 'pkcs12'=>'string', '&w_certificates'=>'array', 'passphrase'=>'string'],
|
||||
'openssl_pkcs7_decrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key='=>'string|resource|array'],
|
||||
'openssl_pkcs7_encrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
'openssl_pkcs7_read' => ['bool', 'input_filename'=>'string', '&w_certificates'=>'array'],
|
||||
'openssl_pkcs7_sign' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
'openssl_pkcs7_decrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key='=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|null|string'],
|
||||
'openssl_pkcs7_encrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
'openssl_pkcs7_read' => ['bool', 'data'=>'string', '&w_certificates'=>'array'],
|
||||
'openssl_pkcs7_sign' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
'openssl_pkcs7_verify' => ['bool|int', 'input_filename'=>'string', 'flags'=>'int', 'signers_certificates_filename='=>'string', 'ca_info='=>'array', 'untrusted_certificates_filename='=>'string', 'content='=>'string', 'output_filename='=>'string'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'mixed', 'private_key'=>'mixed', 'key_length='=>'?int'],
|
||||
'openssl_pkey_export' => ['bool', 'key'=>'resource', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_export_to_file' => ['bool', 'key'=>'resource|string|array', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_free' => ['void', 'key'=>'resource'],
|
||||
'openssl_pkey_get_details' => ['array|false', 'key'=>'resource'],
|
||||
'openssl_pkey_get_private' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_pkey_get_public' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'openssl_pkey_new' => ['resource|false', 'options='=>'array'],
|
||||
'openssl_private_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'openssl_private_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'openssl_public_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'openssl_public_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'openssl_random_pseudo_bytes' => ['string|false', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'key_length='=>'int'],
|
||||
'openssl_pkey_export' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_export_to_file' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_free' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_pkey_get_details' => ['array|false', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_pkey_get_private' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_pkey_get_public' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|string'],
|
||||
'openssl_pkey_new' => ['OpenSSLAsymmetricKey|false', 'options='=>'array'],
|
||||
'openssl_private_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_private_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_public_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_public_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_random_pseudo_bytes' => ['string', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
'openssl_seal' => ['int|false', 'data'=>'string', '&w_sealed_data'=>'string', '&rw_encrypted_keys'=>'array', 'public_key'=>'array', 'cipher_algo'=>'string', '&iv='=>'string'],
|
||||
'openssl_sign' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'openssl_spki_export' => ['?string', 'spki'=>'string'],
|
||||
'openssl_spki_export_challenge' => ['?string', 'spki'=>'string'],
|
||||
'openssl_spki_new' => ['?string', 'private_key'=>'resource', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
'openssl_sign' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
'openssl_spki_export' => ['false|string', 'spki'=>'string'],
|
||||
'openssl_spki_export_challenge' => ['false|string', 'spki'=>'string'],
|
||||
'openssl_spki_new' => ['false|string', 'private_key'=>'OpenSSLAsymmetricKey', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
'openssl_spki_verify' => ['bool', 'spki'=>'string'],
|
||||
'openssl_verify' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'openssl_x509_check_private_key' => ['bool', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array'],
|
||||
'openssl_x509_checkpurpose' => ['bool|int', 'certificate'=>'string|resource', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
'openssl_x509_export' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_export_to_file' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_fingerprint' => ['string|false', 'certificate'=>'string|resource', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
'openssl_x509_free' => ['void', 'certificate'=>'resource'],
|
||||
'openssl_x509_parse' => ['array|false', 'certificate'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_x509_read' => ['resource|false', 'certificate'=>'string|resource'],
|
||||
'openssl_verify' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
'openssl_x509_check_private_key' => ['bool', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'openssl_x509_checkpurpose' => ['bool|int', 'certificate'=>'string|OpenSSLCertificate', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
'openssl_x509_export' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_export_to_file' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_fingerprint' => ['string|false', 'certificate'=>'string|OpenSSLCertificate', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
'openssl_x509_free' => ['void', 'certificate'=>'OpenSSLCertificate'],
|
||||
'openssl_x509_parse' => ['array|false', 'certificate'=>'string|OpenSSLCertificate', 'short_names='=>'bool'],
|
||||
'openssl_x509_read' => ['OpenSSLCertificate|false', 'certificate'=>'string|OpenSSLCertificate'],
|
||||
'openssl_x509_verify' => ['int', 'certificate'=>'OpenSSLCertificate|string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'ord' => ['int', 'character'=>'string'],
|
||||
'OuterIterator::current' => ['mixed'],
|
||||
'OuterIterator::getInnerIterator' => ['Iterator'],
|
||||
@@ -10087,10 +10106,11 @@ return [
|
||||
'parsekit_compile_string' => ['array', 'phpcode'=>'string', 'errors='=>'array', 'options='=>'int'],
|
||||
'parsekit_func_arginfo' => ['array', 'function'=>'mixed'],
|
||||
'passthru' => ['void', 'command'=>'string', '&w_result_code='=>'int'],
|
||||
'password_algos' => ['list<string>'],
|
||||
'password_get_info' => ['array<string,array|int|string>', 'hash'=>'string'],
|
||||
'password_hash' => ['string|false|null', 'password'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'password_hash' => ['string', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'password_make_salt' => ['bool', 'password'=>'string', 'hash'=>'string'],
|
||||
'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'password_verify' => ['bool', 'password'=>'string', 'hash'=>'string'],
|
||||
'pathinfo' => ['array|string', 'path'=>'string', 'flags='=>'int'],
|
||||
'pclose' => ['int', 'handle'=>'resource'],
|
||||
@@ -10110,6 +10130,7 @@ return [
|
||||
'pcntl_sigtimedwait' => ['int', 'signals'=>'array', '&w_info='=>'array', 'seconds='=>'int', 'nanoseconds='=>'int'],
|
||||
'pcntl_sigwaitinfo' => ['int', 'signals'=>'array', '&w_info='=>'array'],
|
||||
'pcntl_strerror' => ['string', 'error_code'=>'int'],
|
||||
'pcntl_unshare' => ['bool', 'flags'=>'int'],
|
||||
'pcntl_wait' => ['int', '&w_status'=>'int', 'flags='=>'int', '&w_resource_usage='=>'array'],
|
||||
'pcntl_waitpid' => ['int', 'process_id'=>'int', '&w_status'=>'int', 'flags='=>'int', '&w_resource_usage='=>'array'],
|
||||
'pcntl_wexitstatus' => ['int', 'status'=>'int'],
|
||||
@@ -10497,7 +10518,7 @@ return [
|
||||
'PDOStatement::fetch' => ['mixed', 'mode='=>'int', 'cursorOrientation='=>'int', 'cursorOffset='=>'int'],
|
||||
'PDOStatement::fetchAll' => ['array|false', 'mode='=>'int', 'args='=>'int|string|callable', 'ctor_args='=>'?array'],
|
||||
'PDOStatement::fetchColumn' => ['string|null|false', 'column='=>'int'],
|
||||
'PDOStatement::fetchObject' => ['mixed|false', 'class='=>'string', 'ctorArgs='=>'?array'],
|
||||
'PDOStatement::fetchObject' => ['mixed|false', 'class='=>'string', 'constructorArgs='=>'?array'],
|
||||
'PDOStatement::getAttribute' => ['mixed', 'name'=>'int'],
|
||||
'PDOStatement::getColumnMeta' => ['array|false', 'column'=>'int'],
|
||||
'PDOStatement::nextRowset' => ['bool'],
|
||||
@@ -10534,8 +10555,8 @@ return [
|
||||
'pg_escape_string\'1' => ['string', 'connection'=>'string'],
|
||||
'pg_execute' => ['resource|false', 'connection'=>'resource', 'statement_name'=>'string', 'params'=>'array'],
|
||||
'pg_execute\'1' => ['resource|false', 'connection'=>'string', 'statement_name'=>'array'],
|
||||
'pg_fetch_all' => ['array<int,array>|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_fetch_all_columns' => ['array<int,?string>|false', 'result'=>'resource', 'field='=>'int'],
|
||||
'pg_fetch_all' => ['array<int,array>', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_fetch_all_columns' => ['array<int,?string>', 'result'=>'resource', 'field='=>'int'],
|
||||
'pg_fetch_array' => ['string[]|null[]|false', 'result'=>'resource', 'row='=>'?int', 'mode='=>'int'],
|
||||
'pg_fetch_assoc' => ['array<string,string|null>|false', 'result'=>'resource', 'row='=>'?int'],
|
||||
'pg_fetch_object' => ['object', 'result'=>'resource', 'row='=>'?int', 'class='=>'int'],
|
||||
@@ -10555,7 +10576,7 @@ return [
|
||||
'pg_field_type_oid' => ['int', 'result'=>'resource', 'field'=>'int'],
|
||||
'pg_flush' => ['bool|int', 'connection'=>'resource'],
|
||||
'pg_free_result' => ['bool', 'result'=>'resource'],
|
||||
'pg_get_notify' => ['array|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_get_notify' => ['array|false', 'connection'=>'resource', 'mode='=>'int'],
|
||||
'pg_get_pid' => ['int', 'connection'=>'resource'],
|
||||
'pg_get_result' => ['resource|false', 'connection'=>'resource'],
|
||||
'pg_host' => ['string', 'connection='=>'resource'],
|
||||
@@ -10698,7 +10719,7 @@ return [
|
||||
'PharData::setDefaultStub' => ['bool', 'index='=>'string', 'webIndex='=>'string'],
|
||||
'phardata::setMetadata' => ['void', 'metadata'=>'mixed'],
|
||||
'phardata::setSignatureAlgorithm' => ['void', 'algo'=>'int'],
|
||||
'PharData::setStub' => ['bool', 'newstub'=>'string', 'maxlen='=>'int'],
|
||||
'PharData::setStub' => ['bool', 'stub'=>'string', 'length='=>'int'],
|
||||
'PharFileInfo::__construct' => ['void', 'filename'=>'string'],
|
||||
'PharFileInfo::chmod' => ['void', 'perms'=>'int'],
|
||||
'PharFileInfo::compress' => ['bool', 'compression'=>'int'],
|
||||
@@ -10755,6 +10776,10 @@ return [
|
||||
'phpdbg_prompt' => ['void', 'string'=>'string'],
|
||||
'phpdbg_start_oplog' => ['void'],
|
||||
'phpinfo' => ['bool', 'flags='=>'int'],
|
||||
'PhpToken::getTokenName' => ['string'],
|
||||
'PhpToken::is' => ['bool', 'kind'=>'string|int|string[]|int[]'],
|
||||
'PhpToken::isIgnorable' => ['bool'],
|
||||
'PhpToken::tokenize' => ['list<PhpToken>', 'code'=>'string', 'flags='=>'int'],
|
||||
'phpversion' => ['string|false', 'extension='=>'string'],
|
||||
'pht\AtomicInteger::__construct' => ['void', 'value='=>'int'],
|
||||
'pht\AtomicInteger::dec' => ['void'],
|
||||
@@ -10794,7 +10819,6 @@ return [
|
||||
'pht\Vector::unshift' => ['void', 'value'=>'mixed'],
|
||||
'pht\Vector::updateAt' => ['void', 'value'=>'mixed', 'offset'=>'int'],
|
||||
'pi' => ['float'],
|
||||
'png2wbmp' => ['bool', 'pngname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'pointObj::__construct' => ['void'],
|
||||
'pointObj::distanceToLine' => ['float', 'p1'=>'pointObj', 'p2'=>'pointObj'],
|
||||
'pointObj::distanceToPoint' => ['float', 'poPoint'=>'pointObj'],
|
||||
@@ -10859,8 +10883,8 @@ return [
|
||||
'preg_match_all' => ['int|false', 'pattern'=>'string', 'subject'=>'string', '&w_matches='=>'array', 'flags='=>'int', 'offset='=>'int'],
|
||||
'preg_quote' => ['string', 'str'=>'string', 'delimiter='=>'string'],
|
||||
'preg_replace' => ['string|string[]', 'pattern'=>'string|array', 'replacement'=>'string|array', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'preg_replace_callback' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'preg_replace_callback' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
'preg_split' => ['list<string>', 'pattern'=>'string', 'subject'=>'string', 'limit='=>'int', 'flags='=>'int'],
|
||||
'prev' => ['mixed', '&r_array'=>'array|object'],
|
||||
'print' => ['int', 'arg'=>'string'],
|
||||
@@ -10868,9 +10892,9 @@ return [
|
||||
'print_r\'1' => ['true', 'value'=>'mixed', 'return='=>'bool'],
|
||||
'printf' => ['int', 'format'=>'string', '...values='=>'string|int|float|Stringable'],
|
||||
'proc_close' => ['int', 'process'=>'resource'],
|
||||
'proc_get_status' => ['array<string,int|string|bool>|false', 'process'=>'resource'],
|
||||
'proc_get_status' => ['array<string,int|string|bool>', 'process'=>'resource'],
|
||||
'proc_nice' => ['bool', 'priority'=>'int'],
|
||||
'proc_open' => ['resource|false', 'command'=>'string', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
'proc_open' => ['resource|false', 'command'=>'string|string[]', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
'proc_terminate' => ['bool', 'process'=>'resource', 'signal='=>'int'],
|
||||
'projectionObj::__construct' => ['void', 'projectionString'=>'string'],
|
||||
'projectionObj::getUnits' => ['int'],
|
||||
@@ -11395,7 +11419,6 @@ return [
|
||||
'RdKafka\TopicPartition::setPartition' => ['void', 'partition'=>'string'],
|
||||
'RdKafka\TopicPartition::setTopic' => ['void', 'topic_name'=>'string'],
|
||||
'rdp_simplify' => ['', 'pointsArray'=>'', 'epsilon'=>''],
|
||||
'read_exif_data' => ['array', 'filename'=>'string', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||
'readdir' => ['string|false', 'dir_handle='=>'resource'],
|
||||
'readfile' => ['int|false', 'filename'=>'string', 'use_include_path='=>'bool', 'context='=>'resource'],
|
||||
'readgzfile' => ['int|false', 'filename'=>'string', 'use_include_path='=>'int'],
|
||||
@@ -12091,6 +12114,7 @@ return [
|
||||
'ReflectionClass::__construct' => ['void', 'objectOrClass'=>'object|class-string'],
|
||||
'ReflectionClass::__toString' => ['string'],
|
||||
'ReflectionClass::export' => ['?string', 'argument'=>'string|object', 'return='=>'bool'],
|
||||
'ReflectionClass::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionClass::getConstant' => ['mixed', 'name'=>'string'],
|
||||
'ReflectionClass::getConstants' => ['array<string,mixed>'],
|
||||
'ReflectionClass::getConstructor' => ['?ReflectionMethod'],
|
||||
@@ -12144,6 +12168,7 @@ return [
|
||||
'ReflectionClassConstant::__construct' => ['void', 'class'=>'mixed', 'constant'=>'string'],
|
||||
'ReflectionClassConstant::__toString' => ['string'],
|
||||
'ReflectionClassConstant::export' => ['string', 'class'=>'mixed', 'name'=>'string', 'return='=>'bool'],
|
||||
'ReflectionClassConstant::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionClassConstant::getDeclaringClass' => ['ReflectionClass'],
|
||||
'ReflectionClassConstant::getDocComment' => ['string|false'],
|
||||
'ReflectionClassConstant::getModifiers' => ['int'],
|
||||
@@ -12202,6 +12227,7 @@ return [
|
||||
'ReflectionFunctionAbstract::__clone' => ['void'],
|
||||
'ReflectionFunctionAbstract::__toString' => ['string'],
|
||||
'ReflectionFunctionAbstract::export' => ['?string'],
|
||||
'ReflectionFunctionAbstract::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionFunctionAbstract::getClosureScopeClass' => ['ReflectionClass'],
|
||||
'ReflectionFunctionAbstract::getClosureThis' => ['object'],
|
||||
'ReflectionFunctionAbstract::getDocComment' => ['string|false'],
|
||||
@@ -12343,6 +12369,7 @@ return [
|
||||
'ReflectionParameter::allowsNull' => ['bool'],
|
||||
'ReflectionParameter::canBePassedByValue' => ['bool'],
|
||||
'ReflectionParameter::export' => ['?string', 'function'=>'string', 'parameter'=>'string', 'return='=>'bool'],
|
||||
'ReflectionParameter::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionParameter::getClass' => ['?ReflectionClass'],
|
||||
'ReflectionParameter::getDeclaringClass' => ['?ReflectionClass'],
|
||||
'ReflectionParameter::getDeclaringFunction' => ['ReflectionFunctionAbstract'],
|
||||
@@ -12363,6 +12390,7 @@ return [
|
||||
'ReflectionProperty::__construct' => ['void', 'class'=>'', 'property'=>'string'],
|
||||
'ReflectionProperty::__toString' => ['string'],
|
||||
'ReflectionProperty::export' => ['?string', 'class'=>'mixed', 'name'=>'string', 'return='=>'bool'],
|
||||
'ReflectionProperty::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionProperty::getDeclaringClass' => ['ReflectionClass'],
|
||||
'ReflectionProperty::getDocComment' => ['string|false'],
|
||||
'ReflectionProperty::getModifiers' => ['int'],
|
||||
@@ -12376,11 +12404,13 @@ return [
|
||||
'ReflectionProperty::setAccessible' => ['void', 'accessible'=>'bool'],
|
||||
'ReflectionProperty::setValue' => ['void', 'objectOrValue'=>'object', 'value'=>''],
|
||||
'ReflectionProperty::setValue\'1' => ['void', 'value'=>''],
|
||||
'ReflectionReference::fromArrayElement' => ['?ReflectionReference', 'array'=>'array', 'key'=>'int|string'],
|
||||
'ReflectionReference::getId' => ['string'],
|
||||
'ReflectionType::__clone' => ['void'],
|
||||
'ReflectionType::__toString' => ['string'],
|
||||
'ReflectionType::allowsNull' => ['bool'],
|
||||
'ReflectionType::getName' => ['string'],
|
||||
'ReflectionType::isBuiltin' => ['bool'],
|
||||
'ReflectionUnionType::getTypes' => ['list<ReflectionNamedType>'],
|
||||
'ReflectionZendExtension::__clone' => ['void'],
|
||||
'ReflectionZendExtension::__construct' => ['void', 'name'=>'string'],
|
||||
'ReflectionZendExtension::__toString' => ['string'],
|
||||
@@ -12547,6 +12577,7 @@ return [
|
||||
'sapi_windows_cp_get' => ['int', 'kind='=>'string'],
|
||||
'sapi_windows_cp_is_utf8' => ['bool'],
|
||||
'sapi_windows_cp_set' => ['bool', 'codepage'=>'int'],
|
||||
'sapi_windows_set_ctrl_handler' => ['bool', 'handler'=>'callable(int):void', 'add='=>'bool'],
|
||||
'sapi_windows_vt100_support' => ['bool', 'stream'=>'resource', 'enable='=>'bool'],
|
||||
'SapiRequest::__construct' => ['void', 'globals'=>'array', 'content='=>'?string'],
|
||||
'SapiResponse::addHeader' => ['\SapiResponseInterface', 'label'=>'string', 'value'=>'string'],
|
||||
@@ -12849,10 +12880,10 @@ return [
|
||||
'SeekableIterator::rewind' => ['void'],
|
||||
'SeekableIterator::seek' => ['void', 'offset'=>'int'],
|
||||
'SeekableIterator::valid' => ['bool'],
|
||||
'sem_acquire' => ['bool', 'semaphore'=>'resource', 'non_blocking='=>'bool'],
|
||||
'sem_get' => ['resource|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
'sem_release' => ['bool', 'semaphore'=>'resource'],
|
||||
'sem_remove' => ['bool', 'semaphore'=>'resource'],
|
||||
'sem_acquire' => ['bool', 'semaphore'=>'SysvSemaphore', 'non_blocking='=>'bool'],
|
||||
'sem_get' => ['SysvSemaphore|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
'sem_release' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
'sem_remove' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
'Serializable::__construct' => ['void'],
|
||||
'Serializable::serialize' => ['?string'],
|
||||
'Serializable::unserialize' => ['void', 'data'=>'string'],
|
||||
@@ -12992,24 +13023,24 @@ return [
|
||||
'shapeObj::union' => ['shapeObj', 'shape'=>'shapeObj'],
|
||||
'shapeObj::within' => ['int', 'shape2'=>'shapeObj'],
|
||||
'shell_exec' => ['?string', 'command'=>'string'],
|
||||
'shm_attach' => ['resource', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
'shm_detach' => ['bool', 'shm'=>'resource'],
|
||||
'shm_get_var' => ['mixed', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shm_has_var' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shm_put_var' => ['bool', 'shm'=>'resource', 'key'=>'int', 'value'=>'mixed'],
|
||||
'shm_remove' => ['bool', 'shm'=>'resource'],
|
||||
'shm_remove_var' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shmop_close' => ['void', 'shmop'=>'resource'],
|
||||
'shmop_delete' => ['bool', 'shmop'=>'resource'],
|
||||
'shmop_open' => ['resource|false', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
'shmop_read' => ['string|false', 'shmop'=>'resource', 'offset'=>'int', 'size'=>'int'],
|
||||
'shmop_size' => ['int', 'shmop'=>'resource'],
|
||||
'shmop_write' => ['int|false', 'shmop'=>'resource', 'data'=>'string', 'offset'=>'int'],
|
||||
'shm_attach' => ['SysvSharedMemory', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
'shm_detach' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
'shm_get_var' => ['mixed', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shm_has_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shm_put_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int', 'value'=>'mixed'],
|
||||
'shm_remove' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
'shm_remove_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shmop_close' => ['void', 'shmop'=>'Shmop'],
|
||||
'shmop_delete' => ['bool', 'shmop'=>'Shmop'],
|
||||
'shmop_open' => ['Shmop', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
'shmop_read' => ['string', 'shmop'=>'Shmop', 'offset'=>'int', 'size'=>'int'],
|
||||
'shmop_size' => ['int', 'shmop'=>'Shmop'],
|
||||
'shmop_write' => ['int', 'shmop'=>'Shmop', 'data'=>'string', 'offset'=>'int'],
|
||||
'show_source' => ['string|bool', 'filename'=>'string', 'return='=>'bool'],
|
||||
'shuffle' => ['bool', '&rw_array'=>'array'],
|
||||
'signeurlpaiement' => ['string', 'clent'=>'string', 'data'=>'string'],
|
||||
'similar_text' => ['int', 'string1'=>'string', 'string2'=>'string', '&w_percent='=>'float'],
|
||||
'simplexml_import_dom' => ['SimpleXMLElement|false', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
'simplexml_import_dom' => ['SimpleXMLElement', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
'simplexml_load_file' => ['SimpleXMLElement|false', 'filename'=>'string', 'class_name='=>'string', 'options='=>'int', 'namespace_or_prefix='=>'string', 'is_prefix='=>'bool'],
|
||||
'simplexml_load_string' => ['SimpleXMLElement|false', 'data'=>'string', 'class_name='=>'string', 'options='=>'int', 'namespace_or_prefix='=>'string', 'is_prefix='=>'bool'],
|
||||
'SimpleXMLElement::__construct' => ['void', 'data'=>'string', 'options='=>'int', 'dataIsURL='=>'bool', 'namespaceOrPrefix='=>'string', 'isPrefix='=>'bool'],
|
||||
@@ -13055,7 +13086,7 @@ return [
|
||||
'sin' => ['float', 'num'=>'float'],
|
||||
'sinh' => ['float', 'num'=>'float'],
|
||||
'sizeof' => ['int', 'value'=>'Countable|array', 'mode='=>'int'],
|
||||
'sleep' => ['int|false', 'seconds'=>'int'],
|
||||
'sleep' => ['int', 'seconds'=>'int'],
|
||||
'snmp2_get' => ['string|false', 'hostname'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'],
|
||||
'snmp2_getnext' => ['string|false', 'hostname'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'],
|
||||
'snmp2_real_walk' => ['array|false', 'hostname'=>'string', 'community'=>'string', 'object_id'=>'string', 'timeout='=>'int', 'retries='=>'int'],
|
||||
@@ -13132,47 +13163,47 @@ return [
|
||||
'SoapServer::SoapServer' => ['object', 'wsdl'=>'?string', 'options='=>'array'],
|
||||
'SoapVar::__construct' => ['void', 'data'=>'mixed', 'encoding'=>'int', 'typeName='=>'string', 'typeNamespace='=>'string', 'nodeName='=>'string', 'nodeNamespace='=>'string'],
|
||||
'SoapVar::SoapVar' => ['object', 'data'=>'mixed', 'encoding'=>'int', 'type_name='=>'string', 'type_namespace='=>'string', 'node_name='=>'string', 'node_namespace='=>'string'],
|
||||
'socket_accept' => ['resource|false', 'socket'=>'resource'],
|
||||
'socket_addrinfo_bind' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_connect' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'resource'],
|
||||
'socket_addrinfo_lookup' => ['resource[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'socket_bind' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_clear_error' => ['void', 'socket='=>'resource'],
|
||||
'socket_close' => ['void', 'socket'=>'resource'],
|
||||
'socket_accept' => ['Socket|false', 'socket'=>'Socket'],
|
||||
'socket_addrinfo_bind' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_connect' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_lookup' => ['AddressInfo[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'socket_bind' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_clear_error' => ['void', 'socket='=>'Socket'],
|
||||
'socket_close' => ['void', 'socket'=>'Socket'],
|
||||
'socket_cmsg_space' => ['int', 'level'=>'int', 'type'=>'int', 'num='=>'int'],
|
||||
'socket_connect' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_create' => ['resource|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
'socket_create_listen' => ['resource|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
'socket_create_pair' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'resource[]'],
|
||||
'socket_export_stream' => ['resource|false', 'socket'=>'resource'],
|
||||
'socket_get_option' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_get_status' => ['array<string,mixed>', 'stream'=>'resource'],
|
||||
'socket_getopt' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getpeername' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_getsockname' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_import_stream' => ['resource|false|null', 'stream'=>'resource'],
|
||||
'socket_last_error' => ['int', 'socket='=>'resource'],
|
||||
'socket_listen' => ['bool', 'socket'=>'resource', 'backlog='=>'int'],
|
||||
'socket_read' => ['string|false', 'socket'=>'resource', 'length'=>'int', 'mode='=>'int'],
|
||||
'socket_recv' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_recvfrom' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_recvmsg' => ['int|false', 'socket'=>'resource', '&w_message'=>'array', 'flags='=>'int'],
|
||||
'socket_select' => ['int|false', '&rw_read'=>'resource[]|null', '&rw_write'=>'resource[]|null', '&rw_except'=>'resource[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_send' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_sendmsg' => ['int|false', 'socket'=>'resource', 'message'=>'array', 'flags='=>'int'],
|
||||
'socket_sendto' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_set_block' => ['bool', 'socket'=>'resource'],
|
||||
'socket_set_blocking' => ['bool', 'stream'=>'resource', 'enable'=>'bool'],
|
||||
'socket_set_nonblock' => ['bool', 'socket'=>'resource'],
|
||||
'socket_set_option' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_connect' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_create' => ['Socket|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
'socket_create_listen' => ['Socket|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
'socket_create_pair' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'Socket[]'],
|
||||
'socket_export_stream' => ['resource|false', 'socket'=>'Socket'],
|
||||
'socket_get_option' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_get_status' => ['array<string,mixed>', 'stream'=>'Socket'],
|
||||
'socket_getopt' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getpeername' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_getsockname' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_import_stream' => ['Socket|false', 'stream'=>'resource'],
|
||||
'socket_last_error' => ['int', 'socket='=>'Socket'],
|
||||
'socket_listen' => ['bool', 'socket'=>'Socket', 'backlog='=>'int'],
|
||||
'socket_read' => ['string|false', 'socket'=>'Socket', 'length'=>'int', 'mode='=>'int'],
|
||||
'socket_recv' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_recvfrom' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_recvmsg' => ['int|false', 'socket'=>'Socket', '&w_message'=>'array', 'flags='=>'int'],
|
||||
'socket_select' => ['int|false', '&rw_read'=>'Socket[]|null', '&rw_write'=>'Socket[]|null', '&rw_except'=>'Socket[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_send' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_sendmsg' => ['int|false', 'socket'=>'Socket', 'message'=>'array', 'flags='=>'int'],
|
||||
'socket_sendto' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_set_block' => ['bool', 'socket'=>'Socket'],
|
||||
'socket_set_blocking' => ['bool', 'stream'=>'Socket', 'enable'=>'bool'],
|
||||
'socket_set_nonblock' => ['bool', 'socket'=>'Socket'],
|
||||
'socket_set_option' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_set_timeout' => ['bool', 'stream'=>'resource', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_setopt' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_shutdown' => ['bool', 'socket'=>'resource', 'mode='=>'int'],
|
||||
'socket_setopt' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_shutdown' => ['bool', 'socket'=>'Socket', 'mode='=>'int'],
|
||||
'socket_strerror' => ['string', 'error_code'=>'int'],
|
||||
'socket_write' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length='=>'int'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'resource', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['resource|false', 'info_id'=>'string'],
|
||||
'socket_write' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length='=>'int'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'Socket', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['Socket|false', 'info_id'=>'string'],
|
||||
'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'],
|
||||
'Sodium\add' => ['void', '&left'=>'string', 'right'=>'string'],
|
||||
'Sodium\bin2hex' => ['string', 'binary'=>'string'],
|
||||
@@ -13261,7 +13292,7 @@ return [
|
||||
'sodium_crypto_box_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_box_seal' => ['string', 'message'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_seal' => ['string', 'message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_box_seal_open' => ['string|false', 'ciphertext'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
@@ -13305,7 +13336,7 @@ return [
|
||||
'sodium_crypto_sign_ed25519_sk_to_curve25519' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_keypair' => ['string'],
|
||||
'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_open' => ['string|false', 'ciphertext'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_open' => ['string|false', 'signed_message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_sign_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
@@ -13320,7 +13351,7 @@ return [
|
||||
'sodium_library_version_minor' => ['int'],
|
||||
'sodium_memcmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_memzero' => ['void', '&string'=>'string'],
|
||||
'sodium_pad' => ['string', 'string'=>'string', 'length'=>'int'],
|
||||
'sodium_pad' => ['string', 'string'=>'string', 'block_size'=>'int'],
|
||||
'sodium_randombytes_buf' => ['string', 'length'=>'int'],
|
||||
'sodium_randombytes_random16' => ['int|string'],
|
||||
'sodium_randombytes_uniform' => ['int', 'upperBoundNonInclusive'=>'int'],
|
||||
@@ -14063,7 +14094,7 @@ return [
|
||||
'spl_object_hash' => ['string', 'object'=>'object'],
|
||||
'spl_object_id' => ['int', 'object'=>'object'],
|
||||
'SplDoublyLinkedList::__construct' => ['void'],
|
||||
'SplDoublyLinkedList::add' => ['void', 'index'=>'mixed', 'value'=>'mixed'],
|
||||
'SplDoublyLinkedList::add' => ['void', 'index'=>'int', 'value'=>'mixed'],
|
||||
'SplDoublyLinkedList::bottom' => ['mixed'],
|
||||
'SplDoublyLinkedList::count' => ['int'],
|
||||
'SplDoublyLinkedList::current' => ['mixed'],
|
||||
@@ -14071,16 +14102,16 @@ return [
|
||||
'SplDoublyLinkedList::isEmpty' => ['bool'],
|
||||
'SplDoublyLinkedList::key' => ['mixed'],
|
||||
'SplDoublyLinkedList::next' => ['void'],
|
||||
'SplDoublyLinkedList::offsetExists' => ['bool', 'index'=>'mixed'],
|
||||
'SplDoublyLinkedList::offsetGet' => ['mixed', 'index'=>'mixed'],
|
||||
'SplDoublyLinkedList::offsetSet' => ['void', 'index'=>'mixed', 'value'=>'mixed'],
|
||||
'SplDoublyLinkedList::offsetUnset' => ['void', 'index'=>'mixed'],
|
||||
'SplDoublyLinkedList::offsetExists' => ['bool', 'index'=>'int'],
|
||||
'SplDoublyLinkedList::offsetGet' => ['mixed', 'index'=>'int'],
|
||||
'SplDoublyLinkedList::offsetSet' => ['void', 'index'=>'int', 'value'=>'mixed'],
|
||||
'SplDoublyLinkedList::offsetUnset' => ['void', 'index'=>'int'],
|
||||
'SplDoublyLinkedList::pop' => ['mixed'],
|
||||
'SplDoublyLinkedList::prev' => ['void'],
|
||||
'SplDoublyLinkedList::push' => ['void', 'value'=>'mixed'],
|
||||
'SplDoublyLinkedList::rewind' => ['void'],
|
||||
'SplDoublyLinkedList::serialize' => ['string'],
|
||||
'SplDoublyLinkedList::setIteratorMode' => ['void', 'mode'=>'int'],
|
||||
'SplDoublyLinkedList::setIteratorMode' => ['int', 'mode'=>'int'],
|
||||
'SplDoublyLinkedList::shift' => ['mixed'],
|
||||
'SplDoublyLinkedList::top' => ['mixed'],
|
||||
'SplDoublyLinkedList::unserialize' => ['void', 'data'=>'string'],
|
||||
@@ -14128,7 +14159,6 @@ return [
|
||||
'SplFileObject::fgetc' => ['string|false'],
|
||||
'SplFileObject::fgetcsv' => ['?array|false', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string'],
|
||||
'SplFileObject::fgets' => ['string|false'],
|
||||
'SplFileObject::fgetss' => ['string|false', 'allowable_tags='=>'string'],
|
||||
'SplFileObject::flock' => ['bool', 'operation'=>'int', '&w_wouldBlock='=>'int'],
|
||||
'SplFileObject::fpassthru' => ['int|false'],
|
||||
'SplFileObject::fputcsv' => ['int|false', 'fields'=>'array', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string'],
|
||||
@@ -14206,7 +14236,7 @@ return [
|
||||
'SplHeap::isEmpty' => ['bool'],
|
||||
'SplHeap::key' => ['int'],
|
||||
'SplHeap::next' => ['void'],
|
||||
'SplHeap::recoverFromCorruption' => ['int'],
|
||||
'SplHeap::recoverFromCorruption' => ['bool'],
|
||||
'SplHeap::rewind' => ['void'],
|
||||
'SplHeap::top' => ['mixed'],
|
||||
'SplHeap::valid' => ['bool'],
|
||||
@@ -14220,7 +14250,7 @@ return [
|
||||
'SplMaxHeap::isEmpty' => ['bool'],
|
||||
'SplMaxHeap::key' => ['int'],
|
||||
'SplMaxHeap::next' => ['void'],
|
||||
'SplMaxHeap::recoverFromCorruption' => ['int'],
|
||||
'SplMaxHeap::recoverFromCorruption' => ['bool'],
|
||||
'SplMaxHeap::rewind' => ['void'],
|
||||
'SplMaxHeap::top' => ['mixed'],
|
||||
'SplMaxHeap::valid' => ['bool'],
|
||||
@@ -14234,12 +14264,12 @@ return [
|
||||
'SplMinHeap::isEmpty' => ['bool'],
|
||||
'SplMinHeap::key' => ['mixed'],
|
||||
'SplMinHeap::next' => ['void'],
|
||||
'SplMinHeap::recoverFromCorruption' => ['void'],
|
||||
'SplMinHeap::recoverFromCorruption' => ['bool'],
|
||||
'SplMinHeap::rewind' => ['void'],
|
||||
'SplMinHeap::top' => ['mixed'],
|
||||
'SplMinHeap::valid' => ['bool'],
|
||||
'SplObjectStorage::__construct' => ['void'],
|
||||
'SplObjectStorage::addAll' => ['void', 'storage'=>'splobjectstorage'],
|
||||
'SplObjectStorage::addAll' => ['int', 'storage'=>'splobjectstorage'],
|
||||
'SplObjectStorage::attach' => ['void', 'object'=>'object', 'info='=>'mixed'],
|
||||
'SplObjectStorage::contains' => ['bool', 'object'=>'object'],
|
||||
'SplObjectStorage::count' => ['int'],
|
||||
@@ -14270,11 +14300,11 @@ return [
|
||||
'SplPriorityQueue::insert' => ['bool', 'value'=>'mixed', 'priority'=>'mixed'],
|
||||
'SplPriorityQueue::isCorrupted' => ['bool'],
|
||||
'SplPriorityQueue::isEmpty' => ['bool'],
|
||||
'SplPriorityQueue::key' => ['mixed'],
|
||||
'SplPriorityQueue::key' => ['int'],
|
||||
'SplPriorityQueue::next' => ['void'],
|
||||
'SplPriorityQueue::recoverFromCorruption' => ['void'],
|
||||
'SplPriorityQueue::recoverFromCorruption' => ['bool'],
|
||||
'SplPriorityQueue::rewind' => ['void'],
|
||||
'SplPriorityQueue::setExtractFlags' => ['void', 'flags'=>'int'],
|
||||
'SplPriorityQueue::setExtractFlags' => ['int', 'flags'=>'int'],
|
||||
'SplPriorityQueue::top' => ['mixed'],
|
||||
'SplPriorityQueue::valid' => ['bool'],
|
||||
'SplQueue::__construct' => ['void'],
|
||||
@@ -14400,6 +14430,7 @@ return [
|
||||
'Spoofchecker::setRestrictionLevel' => ['void', 'level'=>'int'],
|
||||
'sprintf' => ['string', 'format'=>'string', '...values='=>'string|int|float|Stringable'],
|
||||
'SQLite3::__construct' => ['void', 'filename'=>'string', 'flags='=>'int', 'encryptionKey='=>'?string'],
|
||||
'SQLite3::backup' => ['bool', 'destination'=>'SQLite3', 'sourceDatabase='=>'string', 'destinationDatabase='=>'string'],
|
||||
'SQLite3::busyTimeout' => ['bool', 'milliseconds'=>'int'],
|
||||
'SQLite3::changes' => ['int'],
|
||||
'SQLite3::close' => ['bool'],
|
||||
@@ -14432,6 +14463,7 @@ return [
|
||||
'SQLite3Stmt::clear' => ['bool'],
|
||||
'SQLite3Stmt::close' => ['bool'],
|
||||
'SQLite3Stmt::execute' => ['SQLite3Result'],
|
||||
'SQLite3Stmt::getSQL' => ['string', 'expand='=>'bool'],
|
||||
'SQLite3Stmt::paramCount' => ['int'],
|
||||
'SQLite3Stmt::readOnly' => ['bool'],
|
||||
'SQLite3Stmt::reset' => ['bool'],
|
||||
@@ -14728,6 +14760,8 @@ return [
|
||||
'StompException::getTrace' => ['array'],
|
||||
'StompException::getTraceAsString' => ['string'],
|
||||
'StompFrame::__construct' => ['void', 'command='=>'string', 'headers='=>'array', 'body='=>'string'],
|
||||
'str_contains' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_ends_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_getcsv' => ['array<int,string|null>', 'string'=>'string', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string'],
|
||||
'str_ireplace' => ['string|string[]', 'search'=>'string|array', 'replace'=>'string|array', 'subject'=>'string|array', '&w_count='=>'int'],
|
||||
'str_pad' => ['string', 'string'=>'string', 'length'=>'int', 'pad_string='=>'string', 'pad_type='=>'int'],
|
||||
@@ -14736,15 +14770,16 @@ return [
|
||||
'str_rot13' => ['string', 'string'=>'string'],
|
||||
'str_shuffle' => ['string', 'string'=>'string'],
|
||||
'str_split' => ['list<string>', 'string'=>'string', 'length='=>'int'],
|
||||
'str_starts_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_word_count' => ['array<int,string>|int', 'string'=>'string', 'format='=>'int', 'characters='=>'string'],
|
||||
'strcasecmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'strcmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'strcoll' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'strcspn' => ['int', 'string'=>'string', 'characters'=>'string', 'offset='=>'int', 'length='=>'int'],
|
||||
'stream_bucket_append' => ['void', 'brigade'=>'resource', 'bucket'=>'object'],
|
||||
'stream_bucket_make_writeable' => ['object', 'brigade'=>'resource'],
|
||||
'stream_bucket_new' => ['resource|false', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
'stream_bucket_new' => ['object', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
'stream_bucket_prepend' => ['void', 'brigade'=>'resource', 'bucket'=>'object'],
|
||||
'stream_context_create' => ['resource', 'options='=>'array', 'params='=>'array'],
|
||||
'stream_context_get_default' => ['resource', 'options='=>'array'],
|
||||
@@ -14773,7 +14808,7 @@ return [
|
||||
'stream_resolve_include_path' => ['string|false', 'filename'=>'string'],
|
||||
'stream_select' => ['int|false', '&rw_read'=>'resource[]', '&rw_write'=>'?resource[]', '&rw_except'=>'?resource[]', 'seconds'=>'?int', 'microseconds='=>'int'],
|
||||
'stream_set_blocking' => ['bool', 'stream'=>'resource', 'enable'=>'bool'],
|
||||
'stream_set_chunk_size' => ['int|false', 'stream'=>'resource', 'size'=>'int'],
|
||||
'stream_set_chunk_size' => ['int', 'stream'=>'resource', 'size'=>'int'],
|
||||
'stream_set_read_buffer' => ['int', 'stream'=>'resource', 'size'=>'int'],
|
||||
'stream_set_timeout' => ['bool', 'stream'=>'resource', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'stream_set_write_buffer' => ['int', 'stream'=>'resource', 'size'=>'int'],
|
||||
@@ -14816,25 +14851,25 @@ return [
|
||||
'streamWrapper::unlink' => ['bool', 'path'=>'string'],
|
||||
'streamWrapper::url_stat' => ['array', 'path'=>'string', 'flags'=>'int'],
|
||||
'strftime' => ['string', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'strip_tags' => ['string', 'string'=>'string', 'allowed_tags='=>'string'],
|
||||
'strip_tags' => ['string', 'string'=>'string', 'allowed_tags='=>'string|string[]'],
|
||||
'stripcslashes' => ['string', 'string'=>'string'],
|
||||
'stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'stripslashes' => ['string', 'string'=>'string'],
|
||||
'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'strlen' => ['int', 'string'=>'string'],
|
||||
'strnatcasecmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'strnatcmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'strncasecmp' => ['int', 'string1'=>'string', 'string2'=>'string', 'length'=>'int'],
|
||||
'strncmp' => ['int', 'string1'=>'string', 'string2'=>'string', 'length'=>'int'],
|
||||
'strpbrk' => ['string|false', 'string'=>'string', 'characters'=>'string'],
|
||||
'strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'strptime' => ['array<string,int|string>|false', 'timestamp'=>'string', 'format'=>'string'],
|
||||
'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int'],
|
||||
'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'strrev' => ['string', 'string'=>'string'],
|
||||
'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'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|int', 'before_needle='=>'bool'],
|
||||
'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'strtok' => ['string|false', 'string'=>'string', 'token'=>'string'],
|
||||
'strtok\'1' => ['string|false', 'string'=>'string'],
|
||||
'strtolower' => ['string', 'string'=>'string'],
|
||||
@@ -14854,8 +14889,8 @@ return [
|
||||
'styleObj::setBinding' => ['int', 'stylebinding'=>'mixed', 'value'=>'string'],
|
||||
'styleObj::setGeomTransform' => ['int', 'value'=>'string'],
|
||||
'styleObj::updateFromString' => ['int', 'snippet'=>'string'],
|
||||
'substr' => ['string|false', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
'substr_compare' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
'substr' => ['string', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
'substr_compare' => ['int', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
'substr_count' => ['int', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int', 'length='=>'int'],
|
||||
'substr_replace' => ['string|string[]', 'string'=>'string|string[]', 'replace'=>'array|string', 'offset'=>'array|int', 'length='=>'?array|?int'],
|
||||
'suhosin_encrypt_cookie' => ['string|false', 'name'=>'string', 'value'=>'string'],
|
||||
@@ -15976,11 +16011,11 @@ return [
|
||||
'time_nanosleep' => ['array{seconds:int,nanoseconds:int}|bool', 'seconds'=>'int', 'nanoseconds'=>'int'],
|
||||
'time_sleep_until' => ['bool', 'timestamp'=>'float'],
|
||||
'timezone_abbreviations_list' => ['array<string,array>'],
|
||||
'timezone_identifiers_list' => ['list<string>|false', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
'timezone_identifiers_list' => ['list<string>', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
'timezone_location_get' => ['array<string,float|string>|false', 'object'=>'DateTimeZone'],
|
||||
'timezone_name_from_abbr' => ['string|false', 'abbr'=>'string', 'utcOffset='=>'int', 'isDST='=>'int'],
|
||||
'timezone_name_get' => ['string', 'object'=>'DateTimeZone'],
|
||||
'timezone_offset_get' => ['int|false', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
'timezone_offset_get' => ['int', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
'timezone_open' => ['DateTimeZone|false', 'timezone'=>'string'],
|
||||
'timezone_transitions_get' => ['array|false', 'object'=>'DateTimeZone', 'timestampBegin='=>'int', 'timestampEnd='=>'int'],
|
||||
'timezone_version_get' => ['string'],
|
||||
@@ -16764,7 +16799,7 @@ return [
|
||||
'VarnishLog::getTagName' => ['string', 'index'=>'int'],
|
||||
'VarnishStat::__construct' => ['void', 'args='=>'array'],
|
||||
'VarnishStat::getSnapshot' => ['array'],
|
||||
'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\''],
|
||||
'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'?(\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\')'],
|
||||
'vfprintf' => ['int', 'stream'=>'resource', 'format'=>'string', 'values'=>'array'],
|
||||
'vincenty' => ['', 'geoJsonPointFrom'=>'', 'geoJsonPointTo'=>'', 'reference_ellipsoid='=>'mixed'],
|
||||
'virtual' => ['bool', 'uri'=>'string'],
|
||||
@@ -16865,6 +16900,8 @@ return [
|
||||
'Weakref::get' => ['object'],
|
||||
'Weakref::release' => ['bool'],
|
||||
'Weakref::valid' => ['bool'],
|
||||
'WeakReference::create' => ['WeakReference', 'object'=>'object'],
|
||||
'WeakReference::get' => ['?object'],
|
||||
'webObj::convertToString' => ['string'],
|
||||
'webObj::free' => ['void'],
|
||||
'webObj::set' => ['int', 'property_name'=>'string', 'new_value'=>''],
|
||||
@@ -17070,27 +17107,27 @@ return [
|
||||
'xhprof_sample_disable' => ['array'],
|
||||
'xhprof_sample_enable' => ['void'],
|
||||
'xml_error_string' => ['string', 'error_code'=>'int'],
|
||||
'xml_get_current_byte_index' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_current_column_number' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_current_line_number' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_error_code' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_parse' => ['int', 'parser'=>'resource', 'data'=>'string', 'is_final='=>'bool'],
|
||||
'xml_parse_into_struct' => ['int', 'parser'=>'resource', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
'xml_parser_create' => ['resource', 'encoding='=>'string'],
|
||||
'xml_parser_create_ns' => ['resource', 'encoding='=>'string', 'separator='=>'string'],
|
||||
'xml_parser_free' => ['bool', 'parser'=>'resource'],
|
||||
'xml_parser_get_option' => ['mixed|false', 'parser'=>'resource', 'option'=>'int'],
|
||||
'xml_parser_set_option' => ['bool', 'parser'=>'resource', 'option'=>'int', 'value'=>'int|string'],
|
||||
'xml_set_character_data_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_default_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_element_handler' => ['bool', 'parser'=>'resource', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
'xml_set_end_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_external_entity_ref_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_notation_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_object' => ['bool', 'parser'=>'resource', 'object'=>'object'],
|
||||
'xml_set_processing_instruction_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_start_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_unparsed_entity_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_get_current_byte_index' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_current_column_number' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_current_line_number' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_error_code' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_parse' => ['int', 'parser'=>'XMLParser', 'data'=>'string', 'is_final='=>'bool'],
|
||||
'xml_parse_into_struct' => ['int', 'parser'=>'XMLParser', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
'xml_parser_create' => ['XMLParser', 'encoding='=>'string'],
|
||||
'xml_parser_create_ns' => ['XMLParser', 'encoding='=>'string', 'separator='=>'string'],
|
||||
'xml_parser_free' => ['bool', 'parser'=>'XMLParser'],
|
||||
'xml_parser_get_option' => ['int|string', 'parser'=>'XMLParser', 'option'=>'int'],
|
||||
'xml_parser_set_option' => ['bool', 'parser'=>'XMLParser', 'option'=>'int', 'value'=>'int|string'],
|
||||
'xml_set_character_data_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_default_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_element_handler' => ['bool', 'parser'=>'XMLParser', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
'xml_set_end_namespace_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_external_entity_ref_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_notation_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_object' => ['bool', 'parser'=>'XMLParser', 'object'=>'object'],
|
||||
'xml_set_processing_instruction_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_start_namespace_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_unparsed_entity_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'XMLDiff\Base::__construct' => ['void', 'nsname'=>'string'],
|
||||
'XMLDiff\Base::diff' => ['mixed', 'from'=>'mixed', 'to'=>'mixed'],
|
||||
'XMLDiff\Base::merge' => ['mixed', 'src'=>'mixed', 'diff'=>'mixed'],
|
||||
@@ -17149,15 +17186,15 @@ return [
|
||||
'XMLWriter::endDTDEntity' => ['bool'],
|
||||
'XMLWriter::endElement' => ['bool'],
|
||||
'XMLWriter::endPI' => ['bool'],
|
||||
'XMLWriter::flush' => ['', 'empty='=>'bool'],
|
||||
'XMLWriter::flush' => ['string|int', 'empty='=>'bool'],
|
||||
'XMLWriter::fullEndElement' => ['bool'],
|
||||
'XMLWriter::openMemory' => ['bool'],
|
||||
'XMLWriter::openURI' => ['resource', 'uri'=>'string'],
|
||||
'XMLWriter::openURI' => ['bool', 'uri'=>'string'],
|
||||
'XMLWriter::outputMemory' => ['string', 'flush='=>'bool'],
|
||||
'XMLWriter::setIndent' => ['bool', 'enable'=>'bool'],
|
||||
'XMLWriter::setIndentString' => ['bool', 'indentation'=>'string'],
|
||||
'XMLWriter::startAttribute' => ['bool', 'name'=>'string'],
|
||||
'XMLWriter::startAttributeNS' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'XMLWriter::startAttributeNs' => ['bool', 'prefix'=>'?string', 'name'=>'string', 'namespace'=>'?string'],
|
||||
'XMLWriter::startCData' => ['bool'],
|
||||
'XMLWriter::startComment' => ['bool'],
|
||||
'XMLWriter::startDocument' => ['bool', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
@@ -17170,59 +17207,61 @@ return [
|
||||
'XMLWriter::startPI' => ['bool', 'target'=>'string'],
|
||||
'XMLWriter::text' => ['bool', 'content'=>'string'],
|
||||
'XMLWriter::writeAttribute' => ['bool', 'name'=>'string', 'value'=>'string'],
|
||||
'XMLWriter::writeAttributeNS' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'XMLWriter::writeAttributeNS' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'?string', 'value'=>'string'],
|
||||
'XMLWriter::writeAttributeNs' => ['bool', 'prefix'=>'?string', 'name'=>'string', 'namespace'=>'?string', 'value'=>'string'],
|
||||
'XMLWriter::writeCData' => ['bool', 'content'=>'string'],
|
||||
'XMLWriter::writeComment' => ['bool', 'content'=>'string'],
|
||||
'XMLWriter::writeDTD' => ['bool', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'XMLWriter::writeDTDAttlist' => ['bool', 'name'=>'string', 'content'=>'string'],
|
||||
'XMLWriter::writeDTDElement' => ['bool', 'name'=>'string', 'content'=>'string'],
|
||||
'XMLWriter::writeDTDEntity' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam'=>'bool', 'publicId'=>'string', 'systemId'=>'string', 'notationData'=>'string'],
|
||||
'XMLWriter::writeDtdEntity' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'?string', 'systemId='=>'?string', 'notationData='=>'?string'],
|
||||
'XMLWriter::writeElement' => ['bool', 'name'=>'string', 'content='=>'?string'],
|
||||
'XMLWriter::writeElementNS' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'?string'],
|
||||
'XMLWriter::writePI' => ['bool', 'target'=>'string', 'content'=>'string'],
|
||||
'XMLWriter::writeRaw' => ['bool', 'content'=>'string'],
|
||||
'xmlwriter_end_attribute' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_cdata' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_comment' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_document' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_attlist' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_entity' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_pi' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_flush' => ['int|string', 'writer'=>'resource', 'empty='=>'bool'],
|
||||
'xmlwriter_full_end_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_open_memory' => ['resource'],
|
||||
'xmlwriter_open_uri' => ['resource', 'uri'=>'string'],
|
||||
'xmlwriter_output_memory' => ['string', 'writer'=>'resource', 'flush='=>'bool'],
|
||||
'xmlwriter_set_indent' => ['bool', 'writer'=>'resource', 'enable'=>'bool'],
|
||||
'xmlwriter_set_indent_string' => ['bool', 'writer'=>'resource', 'indentation'=>'string'],
|
||||
'xmlwriter_start_attribute' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_attribute_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_cdata' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_start_comment' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_start_document' => ['bool', 'writer'=>'resource', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
'xmlwriter_start_dtd' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
'xmlwriter_start_dtd_attlist' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_dtd_element' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string'],
|
||||
'xmlwriter_start_dtd_entity' => ['bool', 'writer'=>'resource', 'name'=>'string', 'isParam'=>'bool'],
|
||||
'xmlwriter_start_element' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_element_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_pi' => ['bool', 'writer'=>'resource', 'target'=>'string'],
|
||||
'xmlwriter_text' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_attribute' => ['bool', 'writer'=>'resource', 'name'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_attribute_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_cdata' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_comment' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd' => ['bool', 'writer'=>'resource', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_dtd_attlist' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_element' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_entity' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
'xmlwriter_write_element' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_element_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_pi' => ['bool', 'writer'=>'resource', 'target'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_raw' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_end_attribute' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_cdata' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_comment' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_document' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_attlist' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_entity' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_pi' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_flush' => ['int|string', 'writer'=>'XMLWriter', 'empty='=>'bool'],
|
||||
'xmlwriter_full_end_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_open_memory' => ['XMLWriter'],
|
||||
'xmlwriter_open_uri' => ['XMLWriter', 'uri'=>'string'],
|
||||
'xmlwriter_output_memory' => ['string', 'writer'=>'XMLWriter', 'flush='=>'bool'],
|
||||
'xmlwriter_set_indent' => ['bool', 'writer'=>'XMLWriter', 'enable'=>'bool'],
|
||||
'xmlwriter_set_indent_string' => ['bool', 'writer'=>'XMLWriter', 'indentation'=>'string'],
|
||||
'xmlwriter_start_attribute' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_attribute_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_cdata' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_start_comment' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_start_document' => ['bool', 'writer'=>'XMLWriter', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
'xmlwriter_start_dtd' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
'xmlwriter_start_dtd_attlist' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_dtd_element' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string'],
|
||||
'xmlwriter_start_dtd_entity' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'isParam'=>'bool'],
|
||||
'xmlwriter_start_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_element_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_pi' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string'],
|
||||
'xmlwriter_text' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_attribute' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_attribute_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_cdata' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_comment' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_dtd_attlist' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_entity' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
'xmlwriter_write_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_element_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_pi' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_raw' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xpath_new_context' => ['XPathContext', 'dom_document'=>'DOMDocument'],
|
||||
'xpath_register_ns' => ['bool', 'xpath_context'=>'xpathcontext', 'prefix'=>'string', 'uri'=>'string'],
|
||||
'xpath_register_ns_auto' => ['bool', 'xpath_context'=>'xpathcontext', 'context_node='=>'object'],
|
||||
@@ -17259,14 +17298,14 @@ return [
|
||||
'XSLTProcessor::getParameter' => ['string|false', 'namespace'=>'string', 'name'=>'string'],
|
||||
'XsltProcessor::getSecurityPrefs' => ['int'],
|
||||
'XSLTProcessor::hasExsltSupport' => ['bool'],
|
||||
'XSLTProcessor::importStylesheet' => ['bool', 'stylesheet'=>'object'],
|
||||
'XSLTProcessor::registerPHPFunctions' => ['void', 'functions='=>'mixed'],
|
||||
'XSLTProcessor::importStylesheet' => ['bool', 'stylesheet'=>'DOMDocument|SimpleXMLElement'],
|
||||
'XSLTProcessor::registerPHPFunctions' => ['void', 'functions='=>'?array|?string'],
|
||||
'XSLTProcessor::removeParameter' => ['bool', 'namespace'=>'string', 'name'=>'string'],
|
||||
'XSLTProcessor::setParameter' => ['bool', 'namespace'=>'string', 'name'=>'string', 'value'=>'string'],
|
||||
'XSLTProcessor::setParameter\'1' => ['bool', 'namespace'=>'string', 'options'=>'array'],
|
||||
'XSLTProcessor::setProfiling' => ['bool', 'filename'=>'string'],
|
||||
'XsltProcessor::setSecurityPrefs' => ['int', 'preferences'=>'int'],
|
||||
'XSLTProcessor::transformToDoc' => ['DOMDocument|false', 'document'=>'DOMNode'],
|
||||
'XSLTProcessor::setSecurityPrefs' => ['int', 'preferences'=>'int'],
|
||||
'XSLTProcessor::transformToDoc' => ['DOMDocument|false', 'document'=>'DOMDocument|SimpleXMLElement'],
|
||||
'XSLTProcessor::transformToURI' => ['int', 'document'=>'DOMDocument', 'uri'=>'string'],
|
||||
'XSLTProcessor::transformToXML' => ['string', 'document'=>'DOMDocument'],
|
||||
'yac::__construct' => ['void', 'prefix='=>'string'],
|
||||
@@ -18200,7 +18239,7 @@ return [
|
||||
'ZendAPI_Queue::updateJob' => ['int', '&job'=>'Job'],
|
||||
'ZendAPI_Queue::zendapi_queue' => ['ZendAPI_Queue', 'queue_url'=>'string'],
|
||||
'zip_close' => ['void', 'zip'=>'resource'],
|
||||
'zip_entry_close' => ['bool', 'zip_ent'=>'resource'],
|
||||
'zip_entry_close' => ['bool', 'zip_entry'=>'resource'],
|
||||
'zip_entry_compressedsize' => ['int', 'zip_entry'=>'resource'],
|
||||
'zip_entry_compressionmethod' => ['string', 'zip_entry'=>'resource'],
|
||||
'zip_entry_filesize' => ['int', 'zip_entry'=>'resource'],
|
||||
@@ -18212,8 +18251,8 @@ return [
|
||||
'ZipArchive::addEmptyDir' => ['bool', 'dirname'=>'string'],
|
||||
'ZipArchive::addFile' => ['bool', 'filepath'=>'string', 'entryname='=>'string', 'start='=>'int', 'length='=>'int'],
|
||||
'ZipArchive::addFromString' => ['bool', 'name'=>'string', 'content'=>'string'],
|
||||
'ZipArchive::addGlob' => ['bool', 'pattern'=>'string', 'flags='=>'int', 'options='=>'array'],
|
||||
'ZipArchive::addPattern' => ['bool', 'pattern'=>'string', 'path='=>'string', 'options='=>'array'],
|
||||
'ZipArchive::addGlob' => ['array|false', 'pattern'=>'string', 'flags='=>'int', 'options='=>'array'],
|
||||
'ZipArchive::addPattern' => ['array|false', 'pattern'=>'string', 'path='=>'string', 'options='=>'array'],
|
||||
'ZipArchive::close' => ['bool'],
|
||||
'ZipArchive::count' => ['int'],
|
||||
'ZipArchive::createEmptyDir' => ['bool', 'dirname'=>'string'],
|
||||
@@ -18233,18 +18272,18 @@ return [
|
||||
'ZipArchive::isCompressionMethodSupported' => ['bool', 'method'=>'int', 'enc='=>'bool'],
|
||||
'ZipArchive::isEncryptionMethodSupported' => ['bool', 'method'=>'int', 'enc='=>'bool'],
|
||||
'ZipArchive::locateName' => ['int|false', 'name'=>'string', 'flags='=>'int'],
|
||||
'ZipArchive::open' => ['mixed', 'filename'=>'string', 'flags='=>'int'],
|
||||
'ZipArchive::open' => ['bool|int', 'filename'=>'string', 'flags='=>'int'],
|
||||
'ZipArchive::registerCancelCallback' => ['bool', 'callback'=>'callable'],
|
||||
'ZipArchive::registerProgressCallback' => ['bool', 'rate'=>'float', 'callback'=>'callable'],
|
||||
'ZipArchive::renameIndex' => ['bool', 'index'=>'int', 'new_name'=>'string'],
|
||||
'ZipArchive::renameName' => ['bool', 'name'=>'string', 'new_name'=>'string'],
|
||||
'ZipArchive::replaceFile' => ['bool', 'filepath'=>'string', 'index'=>'int', 'start='=>'int', 'length='=>'int', 'flags='=>'int'],
|
||||
'ZipArchive::replaceFile' => ['bool', 'filepath'=>'string', 'index'=>'string', 'start='=>'int', 'length='=>'int', 'flags='=>'int'],
|
||||
'ZipArchive::setArchiveComment' => ['bool', 'comment'=>'string'],
|
||||
'ZipArchive::setCommentIndex' => ['bool', 'index'=>'int', 'comment'=>'string'],
|
||||
'ZipArchive::setCommentName' => ['bool', 'name'=>'string', 'comment'=>'string'],
|
||||
'ZipArchive::setCompressionIndex' => ['bool', 'index'=>'int', 'method'=>'int', 'compflags='=>'int'],
|
||||
'ZipArchive::setCompressionName' => ['bool', 'name'=>'string', 'method'=>'int', 'compflags='=>'int'],
|
||||
'ZipArchive::setEncryptionIndex' => ['bool', 'index'=>'int', 'method'=>'string', 'password='=>'string'],
|
||||
'ZipArchive::setEncryptionIndex' => ['bool', 'index'=>'int', 'method'=>'int', 'password='=>'string'],
|
||||
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
|
||||
'ZipArchive::setExternalAttributesIndex' => ['bool', 'index'=>'int', 'opsys'=>'int', 'attr'=>'int', 'flags='=>'int'],
|
||||
'ZipArchive::setExternalAttributesName' => ['bool', 'name'=>'string', 'opsys'=>'int', 'attr'=>'int', 'flags='=>'int'],
|
||||
|
||||
+1
-1
@@ -298,7 +298,7 @@ return [
|
||||
'get_defined_constants' => '?array<string,?array>|?array<string,?bool>|?array<string,?float>|?array<string,?int>|?array<string,?resource>|?array<string,?string>',
|
||||
'get_defined_functions' => '?array<string,array>',
|
||||
'get_extension_funcs' => '?list<string>|?false',
|
||||
'get_headers' => '?list<array>|?list<string>|?false',
|
||||
'get_headers' => '?array<int|string,array>|?array<int|string,string>|?false',
|
||||
'get_html_translation_table' => '?array<string,string>',
|
||||
'get_loaded_extensions' => '?list<string>',
|
||||
'get_mangled_object_vars' => '?array',
|
||||
|
||||
+196
-190
@@ -16,194 +16,200 @@
|
||||
* TODO: Add some way to warn about functions such as intdiv or IntlChar if they aren't in the configured target_php_version
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'Closure::call' => ['', 'newThis'=>'object', '...args='=>''],
|
||||
'intdiv' => ['int', 'num1'=>'int', 'num2'=>'int'],
|
||||
'IntlChar::charAge' => ['array', 'codepoint'=>'int|string'],
|
||||
'IntlChar::charDigitValue' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charDirection' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charFromName' => ['?int', 'name'=>'string', 'type='=>'int'],
|
||||
'IntlChar::charMirror' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charName' => ['string', 'codepoint'=>'int|string', 'type='=>'int'],
|
||||
'IntlChar::charType' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::chr' => ['string', 'codepoint'=>'mixed'],
|
||||
'IntlChar::digit' => ['int|false', 'codepoint'=>'int|string', 'base='=>'int'],
|
||||
'IntlChar::enumCharNames' => ['void', 'start'=>'mixed', 'end'=>'mixed', 'callback'=>'callable', 'type='=>'int'],
|
||||
'IntlChar::enumCharTypes' => ['void', 'callback='=>'callable'],
|
||||
'IntlChar::foldCase' => ['int|string', 'codepoint'=>'int|string', 'options='=>'int'],
|
||||
'IntlChar::forDigit' => ['int', 'digit'=>'int', 'base'=>'int'],
|
||||
'IntlChar::getBidiPairedBracket' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::getBlockCode' => ['int', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getCombiningClass' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::getFC_NFKC_Closure' => ['string', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getIntPropertyMaxValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyMinValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyMxValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyValue' => ['int', 'codepoint'=>'int|string', 'property'=>'int'],
|
||||
'IntlChar::getNumericValue' => ['float', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getPropertyEnum' => ['int', 'alias'=>'string'],
|
||||
'IntlChar::getPropertyName' => ['string|false', 'property'=>'int', 'type='=>'int'],
|
||||
'IntlChar::getPropertyValueEnum' => ['int', 'property'=>'int', 'name'=>'string'],
|
||||
'IntlChar::getPropertyValueName' => ['string|false', 'property'=>'int', 'value'=>'int', 'type='=>'int'],
|
||||
'IntlChar::getUnicodeVersion' => ['array'],
|
||||
'IntlChar::hasBinaryProperty' => ['bool', 'codepoint'=>'int|string', 'property'=>'int'],
|
||||
'IntlChar::isalnum' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isalpha' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isbase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isblank' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::iscntrl' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isdefined' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isdigit' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isgraph' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDIgnorable' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDPart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDStart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isISOControl' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaIDPart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaIDStart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaSpaceChar' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::islower' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isMirrored' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isprint' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::ispunct' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isspace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::istitle' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUAlphabetic' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isULowercase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isupper' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUUppercase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUWhiteSpace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isWhitespace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isxdigit' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::ord' => ['int', 'character'=>'mixed'],
|
||||
'IntlChar::tolower' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::totitle' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::toupper' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'random_bytes' => ['string', 'length'=>'int'],
|
||||
'random_int' => ['int', 'min'=>'int', 'max'=>'int'],
|
||||
'session_start' => ['bool', 'options='=>'array'],
|
||||
'unserialize' => ['mixed', 'data'=>'string', 'options='=>'array{allowed_classes?:string[]|bool}'],
|
||||
],
|
||||
'old' => [
|
||||
'ereg' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'],
|
||||
'ereg_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'],
|
||||
'eregi' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'],
|
||||
'eregi_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'],
|
||||
'imagepsbbox' => ['array', 'text'=>'string', 'font'=>'', 'size'=>'int', 'space'=>'int', 'tightness'=>'int', 'angle'=>'float'],
|
||||
'imagepsencodefont' => ['bool', 'font_index'=>'resource', 'encodingfile'=>'string'],
|
||||
'imagepsextendfont' => ['bool', 'font_index'=>'resource', 'extend'=>'float'],
|
||||
'imagepsfreefont' => ['bool', 'font_index'=>'resource'],
|
||||
'imagepsloadfont' => ['resource', 'filename'=>'string'],
|
||||
'imagepsslantfont' => ['bool', 'font_index'=>'resource', 'slant'=>'float'],
|
||||
'imagepstext' => ['array', 'image'=>'resource', 'text'=>'string', 'font_index'=>'resource', 'size'=>'int', 'foreground'=>'int', 'background'=>'int', 'x'=>'int', 'y'=>'int', 'space='=>'int', 'tightness='=>'int', 'angle='=>'float', 'antialias_steps='=>'int'],
|
||||
'mssql_bind' => ['bool', 'stmt'=>'resource', 'param_name'=>'string', 'var'=>'mixed', 'type'=>'int', 'is_output='=>'bool', 'is_null='=>'bool', 'maxlen='=>'int'],
|
||||
'mssql_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mssql_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'],
|
||||
'mssql_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'],
|
||||
'mssql_execute' => ['mixed', 'stmt'=>'resource', 'skip_results='=>'bool'],
|
||||
'mssql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'],
|
||||
'mssql_fetch_assoc' => ['array', 'result_id'=>'resource'],
|
||||
'mssql_fetch_batch' => ['int', 'result'=>'resource'],
|
||||
'mssql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'mssql_fetch_object' => ['object', 'result'=>'resource'],
|
||||
'mssql_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'mssql_field_length' => ['int', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_field_name' => ['string', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mssql_field_type' => ['string', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_free_result' => ['bool', 'result'=>'resource'],
|
||||
'mssql_free_statement' => ['bool', 'stmt'=>'resource'],
|
||||
'mssql_get_last_message' => ['string'],
|
||||
'mssql_guid_string' => ['string', 'binary'=>'string', 'short_format='=>'bool'],
|
||||
'mssql_init' => ['resource', 'sp_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mssql_min_error_severity' => ['void', 'severity'=>'int'],
|
||||
'mssql_min_message_severity' => ['void', 'severity'=>'int'],
|
||||
'mssql_next_result' => ['bool', 'result_id'=>'resource'],
|
||||
'mssql_num_fields' => ['int', 'result'=>'resource'],
|
||||
'mssql_num_rows' => ['int', 'result'=>'resource'],
|
||||
'mssql_pconnect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'],
|
||||
'mssql_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource', 'batch_size='=>'int'],
|
||||
'mssql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'],
|
||||
'mssql_rows_affected' => ['int', 'link_identifier'=>'resource'],
|
||||
'mssql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_affected_rows' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_client_encoding' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mysql_connect' => ['resource', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool', 'client_flags='=>'int'],
|
||||
'mysql_create_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_data_seek' => ['bool', 'result'=>'resource', 'row_number'=>'int'],
|
||||
'mysql_db_name' => ['string', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'],
|
||||
'mysql_db_query' => ['resource', 'database'=>'string', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_drop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_errno' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_error' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_escape_string' => ['string', 'unescaped_string'=>'string'],
|
||||
'mysql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'],
|
||||
'mysql_fetch_assoc' => ['array', 'result'=>'resource'],
|
||||
'mysql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'mysql_fetch_lengths' => ['array', 'result'=>'resource'],
|
||||
'mysql_fetch_object' => ['object', 'result'=>'resource', 'class_name='=>'string', 'params='=>'array'],
|
||||
'mysql_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'mysql_field_flags' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_len' => ['int', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_name' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_table' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_type' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_free_result' => ['bool', 'result'=>'resource'],
|
||||
'mysql_get_client_info' => ['string'],
|
||||
'mysql_get_host_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_get_proto_info' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_get_server_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_insert_id' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_list_dbs' => ['resource', 'link_identifier='=>'resource'],
|
||||
'mysql_list_fields' => ['resource', 'database_name'=>'string', 'table_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_list_processes' => ['resource', 'link_identifier='=>'resource'],
|
||||
'mysql_list_tables' => ['resource', 'database'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_num_fields' => ['int', 'result'=>'resource'],
|
||||
'mysql_num_rows' => ['int', 'result'=>'resource'],
|
||||
'mysql_pconnect' => ['resource', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'client_flags='=>'int'],
|
||||
'mysql_ping' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mysql_query' => ['resource', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_real_escape_string' => ['string', 'unescaped_string'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'],
|
||||
'mysql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_set_charset' => ['bool', 'charset'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_stat' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_tablename' => ['string', 'result'=>'resource', 'i'=>'int'],
|
||||
'mysql_thread_id' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_unbuffered_query' => ['resource', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'session_start' => ['bool'],
|
||||
'split' => ['list<string>', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'],
|
||||
'spliti' => ['list<string>', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'],
|
||||
'sql_regcase' => ['string', 'string'=>'string'],
|
||||
'sybase_affected_rows' => ['int', 'link_identifier='=>'resource'],
|
||||
'sybase_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'sybase_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string', 'new='=>'bool'],
|
||||
'sybase_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'],
|
||||
'sybase_deadlock_retry_count' => ['void', 'retry_count'=>'int'],
|
||||
'sybase_fetch_array' => ['array', 'result'=>'resource'],
|
||||
'sybase_fetch_assoc' => ['array', 'result'=>'resource'],
|
||||
'sybase_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'sybase_fetch_object' => ['object', 'result'=>'resource', 'object='=>'mixed'],
|
||||
'sybase_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'sybase_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'sybase_free_result' => ['bool', 'result'=>'resource'],
|
||||
'sybase_get_last_message' => ['string'],
|
||||
'sybase_min_client_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_error_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_message_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_server_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_num_fields' => ['int', 'result'=>'resource'],
|
||||
'sybase_num_rows' => ['int', 'result'=>'resource'],
|
||||
'sybase_pconnect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string'],
|
||||
'sybase_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'sybase_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'],
|
||||
'sybase_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'sybase_set_message_handler' => ['bool', 'handler'=>'callable', 'connection='=>'resource'],
|
||||
'sybase_unbuffered_query' => ['resource', 'query'=>'string', 'link_identifier'=>'resource', 'store_result='=>'bool'],
|
||||
'unserialize' => ['mixed', 'data'=>'string'],
|
||||
],
|
||||
'added' => [
|
||||
'Closure::call' => ['', 'newThis'=>'object', '...args='=>''],
|
||||
'intdiv' => ['int', 'num1'=>'int', 'num2'=>'int'],
|
||||
'IntlChar::charAge' => ['array', 'codepoint'=>'int|string'],
|
||||
'IntlChar::charDigitValue' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charDirection' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charFromName' => ['?int', 'name'=>'string', 'type='=>'int'],
|
||||
'IntlChar::charMirror' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::charName' => ['string', 'codepoint'=>'int|string', 'type='=>'int'],
|
||||
'IntlChar::charType' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::chr' => ['string', 'codepoint'=>'mixed'],
|
||||
'IntlChar::digit' => ['int|false', 'codepoint'=>'int|string', 'base='=>'int'],
|
||||
'IntlChar::enumCharNames' => ['void', 'start'=>'mixed', 'end'=>'mixed', 'callback'=>'callable', 'type='=>'int'],
|
||||
'IntlChar::enumCharTypes' => ['void', 'callback='=>'callable'],
|
||||
'IntlChar::foldCase' => ['int|string', 'codepoint'=>'int|string', 'options='=>'int'],
|
||||
'IntlChar::forDigit' => ['int', 'digit'=>'int', 'base'=>'int'],
|
||||
'IntlChar::getBidiPairedBracket' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::getBlockCode' => ['int', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getCombiningClass' => ['int', 'codepoint'=>'mixed'],
|
||||
'IntlChar::getFC_NFKC_Closure' => ['string', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getIntPropertyMaxValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyMinValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyMxValue' => ['int', 'property'=>'int'],
|
||||
'IntlChar::getIntPropertyValue' => ['int', 'codepoint'=>'int|string', 'property'=>'int'],
|
||||
'IntlChar::getNumericValue' => ['float', 'codepoint'=>'int|string'],
|
||||
'IntlChar::getPropertyEnum' => ['int', 'alias'=>'string'],
|
||||
'IntlChar::getPropertyName' => ['string|false', 'property'=>'int', 'type='=>'int'],
|
||||
'IntlChar::getPropertyValueEnum' => ['int', 'property'=>'int', 'name'=>'string'],
|
||||
'IntlChar::getPropertyValueName' => ['string|false', 'property'=>'int', 'value'=>'int', 'type='=>'int'],
|
||||
'IntlChar::getUnicodeVersion' => ['array'],
|
||||
'IntlChar::hasBinaryProperty' => ['bool', 'codepoint'=>'int|string', 'property'=>'int'],
|
||||
'IntlChar::isalnum' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isalpha' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isbase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isblank' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::iscntrl' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isdefined' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isdigit' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isgraph' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDIgnorable' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDPart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isIDStart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isISOControl' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaIDPart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaIDStart' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isJavaSpaceChar' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::islower' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isMirrored' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isprint' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::ispunct' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isspace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::istitle' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUAlphabetic' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isULowercase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isupper' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUUppercase' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isUWhiteSpace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isWhitespace' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::isxdigit' => ['bool', 'codepoint'=>'mixed'],
|
||||
'IntlChar::ord' => ['int', 'character'=>'mixed'],
|
||||
'IntlChar::tolower' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::totitle' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'IntlChar::toupper' => ['mixed', 'codepoint'=>'mixed'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'random_bytes' => ['string', 'length'=>'int'],
|
||||
'random_int' => ['int', 'min'=>'int', 'max'=>'int'],
|
||||
],
|
||||
'changed' => [
|
||||
'session_start' => [
|
||||
'old' => ['bool'],
|
||||
'new' => ['bool', 'options='=>'array'],
|
||||
],
|
||||
'unserialize' => [
|
||||
'old' => ['mixed', 'data'=>'string'],
|
||||
'new' => ['mixed', 'data'=>'string', 'options='=>'array{allowed_classes?:string[]|bool}'],
|
||||
],
|
||||
],
|
||||
'removed' => [
|
||||
'ereg' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'],
|
||||
'ereg_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'],
|
||||
'eregi' => ['int', 'pattern'=>'string', 'string'=>'string', 'regs='=>'array'],
|
||||
'eregi_replace' => ['string', 'pattern'=>'string', 'replacement'=>'string', 'string'=>'string'],
|
||||
'imagepsbbox' => ['array', 'text'=>'string', 'font'=>'', 'size'=>'int', 'space'=>'int', 'tightness'=>'int', 'angle'=>'float'],
|
||||
'imagepsencodefont' => ['bool', 'font_index'=>'resource', 'encodingfile'=>'string'],
|
||||
'imagepsextendfont' => ['bool', 'font_index'=>'resource', 'extend'=>'float'],
|
||||
'imagepsfreefont' => ['bool', 'font_index'=>'resource'],
|
||||
'imagepsloadfont' => ['resource', 'filename'=>'string'],
|
||||
'imagepsslantfont' => ['bool', 'font_index'=>'resource', 'slant'=>'float'],
|
||||
'imagepstext' => ['array', 'image'=>'resource', 'text'=>'string', 'font_index'=>'resource', 'size'=>'int', 'foreground'=>'int', 'background'=>'int', 'x'=>'int', 'y'=>'int', 'space='=>'int', 'tightness='=>'int', 'angle='=>'float', 'antialias_steps='=>'int'],
|
||||
'mssql_bind' => ['bool', 'stmt'=>'resource', 'param_name'=>'string', 'var'=>'mixed', 'type'=>'int', 'is_output='=>'bool', 'is_null='=>'bool', 'maxlen='=>'int'],
|
||||
'mssql_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mssql_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'],
|
||||
'mssql_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'],
|
||||
'mssql_execute' => ['mixed', 'stmt'=>'resource', 'skip_results='=>'bool'],
|
||||
'mssql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'],
|
||||
'mssql_fetch_assoc' => ['array', 'result_id'=>'resource'],
|
||||
'mssql_fetch_batch' => ['int', 'result'=>'resource'],
|
||||
'mssql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'mssql_fetch_object' => ['object', 'result'=>'resource'],
|
||||
'mssql_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'mssql_field_length' => ['int', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_field_name' => ['string', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mssql_field_type' => ['string', 'result'=>'resource', 'offset='=>'int'],
|
||||
'mssql_free_result' => ['bool', 'result'=>'resource'],
|
||||
'mssql_free_statement' => ['bool', 'stmt'=>'resource'],
|
||||
'mssql_get_last_message' => ['string'],
|
||||
'mssql_guid_string' => ['string', 'binary'=>'string', 'short_format='=>'bool'],
|
||||
'mssql_init' => ['resource', 'sp_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mssql_min_error_severity' => ['void', 'severity'=>'int'],
|
||||
'mssql_min_message_severity' => ['void', 'severity'=>'int'],
|
||||
'mssql_next_result' => ['bool', 'result_id'=>'resource'],
|
||||
'mssql_num_fields' => ['int', 'result'=>'resource'],
|
||||
'mssql_num_rows' => ['int', 'result'=>'resource'],
|
||||
'mssql_pconnect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool'],
|
||||
'mssql_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource', 'batch_size='=>'int'],
|
||||
'mssql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'],
|
||||
'mssql_rows_affected' => ['int', 'link_identifier'=>'resource'],
|
||||
'mssql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_affected_rows' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_client_encoding' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mysql_connect' => ['resource', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'new_link='=>'bool', 'client_flags='=>'int'],
|
||||
'mysql_create_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_data_seek' => ['bool', 'result'=>'resource', 'row_number'=>'int'],
|
||||
'mysql_db_name' => ['string', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'],
|
||||
'mysql_db_query' => ['resource', 'database'=>'string', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_drop_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_errno' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_error' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_escape_string' => ['string', 'unescaped_string'=>'string'],
|
||||
'mysql_fetch_array' => ['array', 'result'=>'resource', 'result_type='=>'int'],
|
||||
'mysql_fetch_assoc' => ['array', 'result'=>'resource'],
|
||||
'mysql_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'mysql_fetch_lengths' => ['array', 'result'=>'resource'],
|
||||
'mysql_fetch_object' => ['object', 'result'=>'resource', 'class_name='=>'string', 'params='=>'array'],
|
||||
'mysql_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'mysql_field_flags' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_len' => ['int', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_name' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_table' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_field_type' => ['string', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'mysql_free_result' => ['bool', 'result'=>'resource'],
|
||||
'mysql_get_client_info' => ['string'],
|
||||
'mysql_get_host_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_get_proto_info' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_get_server_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_info' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_insert_id' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_list_dbs' => ['resource', 'link_identifier='=>'resource'],
|
||||
'mysql_list_fields' => ['resource', 'database_name'=>'string', 'table_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_list_processes' => ['resource', 'link_identifier='=>'resource'],
|
||||
'mysql_list_tables' => ['resource', 'database'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_num_fields' => ['int', 'result'=>'resource'],
|
||||
'mysql_num_rows' => ['int', 'result'=>'resource'],
|
||||
'mysql_pconnect' => ['resource', 'server='=>'string', 'username='=>'string', 'password='=>'string', 'client_flags='=>'int'],
|
||||
'mysql_ping' => ['bool', 'link_identifier='=>'resource'],
|
||||
'mysql_query' => ['resource', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_real_escape_string' => ['string', 'unescaped_string'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field='=>'mixed'],
|
||||
'mysql_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_set_charset' => ['bool', 'charset'=>'string', 'link_identifier='=>'resource'],
|
||||
'mysql_stat' => ['string', 'link_identifier='=>'resource'],
|
||||
'mysql_tablename' => ['string', 'result'=>'resource', 'i'=>'int'],
|
||||
'mysql_thread_id' => ['int', 'link_identifier='=>'resource'],
|
||||
'mysql_unbuffered_query' => ['resource', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'split' => ['list<string>', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'],
|
||||
'spliti' => ['list<string>', 'pattern'=>'string', 'string'=>'string', 'limit='=>'int'],
|
||||
'sql_regcase' => ['string', 'string'=>'string'],
|
||||
'sybase_affected_rows' => ['int', 'link_identifier='=>'resource'],
|
||||
'sybase_close' => ['bool', 'link_identifier='=>'resource'],
|
||||
'sybase_connect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string', 'new='=>'bool'],
|
||||
'sybase_data_seek' => ['bool', 'result_identifier'=>'resource', 'row_number'=>'int'],
|
||||
'sybase_deadlock_retry_count' => ['void', 'retry_count'=>'int'],
|
||||
'sybase_fetch_array' => ['array', 'result'=>'resource'],
|
||||
'sybase_fetch_assoc' => ['array', 'result'=>'resource'],
|
||||
'sybase_fetch_field' => ['object', 'result'=>'resource', 'field_offset='=>'int'],
|
||||
'sybase_fetch_object' => ['object', 'result'=>'resource', 'object='=>'mixed'],
|
||||
'sybase_fetch_row' => ['array', 'result'=>'resource'],
|
||||
'sybase_field_seek' => ['bool', 'result'=>'resource', 'field_offset'=>'int'],
|
||||
'sybase_free_result' => ['bool', 'result'=>'resource'],
|
||||
'sybase_get_last_message' => ['string'],
|
||||
'sybase_min_client_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_error_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_message_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_min_server_severity' => ['void', 'severity'=>'int'],
|
||||
'sybase_num_fields' => ['int', 'result'=>'resource'],
|
||||
'sybase_num_rows' => ['int', 'result'=>'resource'],
|
||||
'sybase_pconnect' => ['resource', 'servername='=>'string', 'username='=>'string', 'password='=>'string', 'charset='=>'string', 'appname='=>'string'],
|
||||
'sybase_query' => ['mixed', 'query'=>'string', 'link_identifier='=>'resource'],
|
||||
'sybase_result' => ['string', 'result'=>'resource', 'row'=>'int', 'field'=>'mixed'],
|
||||
'sybase_select_db' => ['bool', 'database_name'=>'string', 'link_identifier='=>'resource'],
|
||||
'sybase_set_message_handler' => ['bool', 'handler'=>'callable', 'connection='=>'resource'],
|
||||
'sybase_unbuffered_query' => ['resource', 'query'=>'string', 'link_identifier'=>'resource', 'store_result='=>'bool'],
|
||||
],
|
||||
];
|
||||
|
||||
+50
-34
@@ -14,38 +14,54 @@
|
||||
* @phan-file-suppress PhanPluginMixedKeyNoKey (read by Phan when analyzing this file)
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'Closure::fromCallable' => ['Closure', 'callback'=>'callable'],
|
||||
'SQLite3::createFunction' => ['bool', 'name'=>'string', 'callback'=>'callable', 'argCount='=>'int', 'flags='=>'int'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'resource'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'resource'],
|
||||
'curl_share_strerror' => ['string', 'error_code'=>'int'],
|
||||
'get_headers' => ['array<int|string,array|string>|false', 'url'=>'string', 'associative='=>'bool', 'context='=>'resource'],
|
||||
'getenv\'1' => ['array<string,string>'],
|
||||
'getopt' => ['array<string,string>|array<string,false>|array<string,list<mixed>>', 'short_options'=>'string', 'long_options='=>'array', '&w_rest_index='=>'int'],
|
||||
'hash_hkdf' => ['string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'is_iterable' => ['bool', 'value'=>'mixed'],
|
||||
'openssl_get_curve_names' => ['list<string>'],
|
||||
'pcntl_async_signals' => ['bool', 'enable='=>'bool'],
|
||||
'pcntl_signal_get_handler' => ['int|callable', 'signal'=>'int'],
|
||||
'pg_fetch_all' => ['array<int,array>|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_last_error' => ['string', 'connection='=>'resource', 'operation='=>'int'],
|
||||
'pg_select' => ['string|bool', 'connection'=>'resource', 'table_name'=>'string', 'conditions'=>'array', 'flags='=>'int', 'mode='=>'int'],
|
||||
'sapi_windows_cp_conv' => ['string', 'in_codepage'=>'int|string', 'out_codepage'=>'int|string', 'subject'=>'string'],
|
||||
'sapi_windows_cp_get' => ['int', 'kind='=>'string'],
|
||||
'sapi_windows_cp_is_utf8' => ['bool'],
|
||||
'sapi_windows_cp_set' => ['bool', 'codepage'=>'int'],
|
||||
'session_create_id' => ['string', 'prefix='=>'string'],
|
||||
'session_gc' => ['int|false'],
|
||||
'unpack' => ['array|false', 'format'=>'string', 'string'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
'old' => [
|
||||
'SQLite3::createFunction' => ['bool', 'name'=>'string', 'callback'=>'callable', 'argCount='=>'int'],
|
||||
'get_headers' => ['array|false', 'url'=>'string', 'associative='=>'bool'],
|
||||
'getopt' => ['array<string,string>|array<string,false>|array<string,list<string|false>>', 'short_options'=>'string', 'long_options='=>'array'],
|
||||
'pg_fetch_all' => ['array', 'result'=>'resource'],
|
||||
'pg_last_error' => ['string', 'connection='=>'resource'],
|
||||
'pg_select' => ['mixed', 'connection'=>'resource', 'table_name'=>'string', 'conditions'=>'array', 'flags='=>'int'],
|
||||
'unpack' => ['array', 'format'=>'string', 'string'=>'string'],
|
||||
],
|
||||
'added' => [
|
||||
'Closure::fromCallable' => ['Closure', 'callback'=>'callable'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'resource'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'resource'],
|
||||
'curl_share_strerror' => ['string', 'error_code'=>'int'],
|
||||
'getenv\'1' => ['array<string,string>'],
|
||||
'hash_hkdf' => ['string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'is_iterable' => ['bool', 'value'=>'mixed'],
|
||||
'openssl_get_curve_names' => ['list<string>'],
|
||||
'pcntl_async_signals' => ['bool', 'enable='=>'bool'],
|
||||
'pcntl_signal_get_handler' => ['int|callable', 'signal'=>'int'],
|
||||
'sapi_windows_cp_conv' => ['string', 'in_codepage'=>'int|string', 'out_codepage'=>'int|string', 'subject'=>'string'],
|
||||
'sapi_windows_cp_get' => ['int', 'kind='=>'string'],
|
||||
'sapi_windows_cp_is_utf8' => ['bool'],
|
||||
'sapi_windows_cp_set' => ['bool', 'codepage'=>'int'],
|
||||
'session_create_id' => ['string', 'prefix='=>'string'],
|
||||
'session_gc' => ['int|false'],
|
||||
],
|
||||
'changed' => [
|
||||
'get_headers' => [
|
||||
'old' => ['array<int|string,array|string>|false', 'url'=>'string', 'associative='=>'bool'],
|
||||
'new' => ['array<int|string,array|string>|false', 'url'=>'string', 'associative='=>'bool', 'context='=>'resource'],
|
||||
],
|
||||
'getopt' => [
|
||||
'old' => ['array<string,string>|array<string,false>|array<string,list<string|false>>', 'short_options'=>'string', 'long_options='=>'array'],
|
||||
'new' => ['array<string,string>|array<string,false>|array<string,list<mixed>>', 'short_options'=>'string', 'long_options='=>'array', '&w_rest_index='=>'int'],
|
||||
],
|
||||
'pg_fetch_all' => [
|
||||
'old' => ['array', 'result'=>'resource'],
|
||||
'new' => ['array<int,array>|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
],
|
||||
'pg_last_error' => [
|
||||
'old' => ['string', 'connection='=>'resource'],
|
||||
'new' => ['string', 'connection='=>'resource', 'operation='=>'int'],
|
||||
],
|
||||
'pg_select' => [
|
||||
'old' => ['mixed', 'connection'=>'resource', 'table_name'=>'string', 'conditions'=>'array', 'flags='=>'int'],
|
||||
'new' => ['string|bool', 'connection'=>'resource', 'table_name'=>'string', 'conditions'=>'array', 'flags='=>'int', 'mode='=>'int'],
|
||||
],
|
||||
'SQLite3::createFunction' => [
|
||||
'old' => ['bool', 'name'=>'string', 'callback'=>'callable', 'argCount='=>'int'],
|
||||
'new' => ['bool', 'name'=>'string', 'callback'=>'callable', 'argCount='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'unpack' => [
|
||||
'old' => ['array', 'format'=>'string', 'string'=>'string'],
|
||||
'new' => ['array|false', 'format'=>'string', 'string'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
],
|
||||
'removed' => [
|
||||
],
|
||||
];
|
||||
|
||||
+148
-132
@@ -14,136 +14,152 @@
|
||||
* @phan-file-suppress PhanPluginMixedKeyNoKey (read by Phan when analyzing this file)
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'DOMNodeList::count' => ['int'],
|
||||
'ftp_append' => ['bool', 'ftp'=>'resource', 'remote_filename'=>'string', 'local_filename'=>'string', 'mode='=>'int'],
|
||||
'hash_copy' => ['HashContext', 'context'=>'HashContext'],
|
||||
'hash_final' => ['string', 'context'=>'HashContext', 'binary='=>'bool'],
|
||||
'hash_hmac_algos' => ['list<string>'],
|
||||
'hash_init' => ['HashContext', 'algo'=>'string', 'flags='=>'int', 'key='=>'string'],
|
||||
'hash_update' => ['bool', 'context'=>'HashContext', 'data'=>'string'],
|
||||
'hash_update_file' => ['bool', 'context'=>'HashContext', 'filename'=>'string', 'stream_context='=>'?resource'],
|
||||
'hash_update_stream' => ['int', 'context'=>'HashContext', 'stream'=>'resource', 'length='=>'int'],
|
||||
'imagebmp' => ['bool', 'image'=>'resource', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'resource', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagesetclip' => ['bool', 'image'=>'resource', 'x1'=>'int', 'x2'=>'int', 'y1'=>'int', 'y2'=>'int'],
|
||||
'ldap_exop' => ['bool|resource', 'ldap'=>'resource', 'request_oid'=>'string', 'request_data='=>'string', 'controls='=>'array', '&w_response_data='=>'string', '&w_response_oid='=>'string'],
|
||||
'ldap_exop_passwd' => ['bool|string', 'ldap'=>'resource', 'user='=>'string', 'old_password='=>'string', 'new_password='=>'string', '&controls='=>'array'],
|
||||
'ldap_exop_refresh' => ['int|false', 'ldap'=>'resource', 'dn'=>'string', 'ttl'=>'int'],
|
||||
'ldap_exop_whoami' => ['string|false', 'ldap'=>'resource'],
|
||||
'ldap_parse_exop' => ['bool', 'ldap'=>'resource', 'result'=>'resource', '&w_response_data='=>'string', '&w_response_oid='=>'string'],
|
||||
'mb_chr' => ['string|false', 'codepoint'=>'int', 'encoding='=>'string'],
|
||||
'mb_ord' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_scrub' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'oci_register_taf_callback' => ['bool', 'connection'=>'resource', 'callback'=>'callable'],
|
||||
'oci_set_call_timeout' => ['bool', 'connection'=>'resource', 'timeout'=>'int'],
|
||||
'oci_unregister_taf_callback' => ['bool', 'connection'=>'resource'],
|
||||
'ReflectionClass::isIterable' => ['bool'],
|
||||
'SQLite3::openBlob' => ['resource|false', 'table'=>'string', 'column'=>'string', 'rowid'=>'int', 'database='=>'string', 'flags='=>'int'],
|
||||
'sapi_windows_vt100_support' => ['bool', 'stream'=>'resource', 'enable='=>'bool'],
|
||||
'socket_addrinfo_bind' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_connect' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'resource'],
|
||||
'socket_addrinfo_lookup' => ['resource[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'sodium_add' => ['void', '&string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_base642bin' => ['string', 'string'=>'string', 'id'=>'int', 'ignore='=>'string'],
|
||||
'sodium_bin2base64' => ['string', 'string'=>'string', 'id'=>'int'],
|
||||
'sodium_bin2hex' => ['string', 'string'=>'string'],
|
||||
'sodium_compare' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_decrypt' => ['string|false', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_is_available' => ['bool'],
|
||||
'sodium_crypto_aead_aes256gcm_keygen' => ['string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_decrypt' => ['string', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => ['false|string', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_keygen' => ['string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_keygen' => ['string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' => ['string|false', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' => ['string'],
|
||||
'sodium_crypto_auth' => ['string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_auth_keygen' => ['string'],
|
||||
'sodium_crypto_auth_verify' => ['bool', 'mac'=>'string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_box' => ['string', 'message'=>'string', 'nonce'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_keypair' => ['string'],
|
||||
'sodium_crypto_box_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_box_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_box_seal' => ['string', 'message'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_seal_open' => ['string|false', 'ciphertext'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_generichash' => ['string', 'message'=>'string', 'key='=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_final' => ['string', '&state'=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_init' => ['string', 'key='=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_keygen' => ['string'],
|
||||
'sodium_crypto_generichash_update' => ['bool', '&state'=>'string', 'message'=>'string'],
|
||||
'sodium_crypto_kdf_derive_from_key' => ['string', 'subkey_length'=>'int', 'subkey_id'=>'int', 'context'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_kdf_keygen' => ['string'],
|
||||
'sodium_crypto_kx_client_session_keys' => ['array<int,string>', 'client_key_pair'=>'string', 'server_key'=>'string'],
|
||||
'sodium_crypto_kx_keypair' => ['string'],
|
||||
'sodium_crypto_kx_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_kx_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_kx_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_kx_server_session_keys' => ['array<int,string>', 'server_key_pair'=>'string', 'client_key'=>'string'],
|
||||
'sodium_crypto_pwhash' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int', 'algo='=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'],
|
||||
'sodium_crypto_pwhash_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_str_needs_rehash' => ['bool', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'],
|
||||
'sodium_crypto_scalarmult' => ['string', 'n'=>'string', 'p'=>'string'],
|
||||
'sodium_crypto_scalarmult_base' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_secretbox' => ['string', 'message'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretbox_keygen' => ['string'],
|
||||
'sodium_crypto_secretbox_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_init_pull' => ['string', 'header'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_init_push' => ['array', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_keygen' => ['string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_pull' => ['array', '&state'=>'string', 'ciphertext'=>'string', 'additional_data='=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_push' => ['string', '&state'=>'string', 'message'=>'string', 'additional_data='=>'string', 'tag='=>'int'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_rekey' => ['void', '&state'=>'string'],
|
||||
'sodium_crypto_shorthash' => ['string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_shorthash_keygen' => ['string'],
|
||||
'sodium_crypto_sign' => ['string', 'message'=>'string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_detached' => ['string', 'message'=>'string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_ed25519_pk_to_curve25519' => ['string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_ed25519_sk_to_curve25519' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_keypair' => ['string'],
|
||||
'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_open' => ['string|false', 'ciphertext'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_sign_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_sign_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_sign_verify_detached' => ['bool', 'signature'=>'string', 'message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_stream' => ['string', 'length'=>'int', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_stream_keygen' => ['string'],
|
||||
'sodium_crypto_stream_xor' => ['string', 'message'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_hex2bin' => ['string', 'string'=>'string', 'ignore='=>'string'],
|
||||
'sodium_increment' => ['void', '&string'=>'string'],
|
||||
'sodium_memcmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_memzero' => ['void', '&string'=>'string'],
|
||||
'sodium_pad' => ['string', 'string'=>'string', 'length'=>'int'],
|
||||
'sodium_unpad' => ['string', 'string'=>'string', 'block_size'=>'int'],
|
||||
'stream_isatty' => ['bool', 'stream'=>'resource'],
|
||||
'ZipArchive::count' => ['int'],
|
||||
'ZipArchive::setEncryptionIndex' => ['bool', 'index'=>'int', 'method'=>'string', 'password='=>'string'],
|
||||
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
|
||||
],
|
||||
'old' => [
|
||||
'hash_copy' => ['resource', 'context'=>'resource'],
|
||||
'hash_final' => ['string', 'context'=>'resource', 'binary='=>'bool'],
|
||||
'hash_init' => ['resource', 'algo'=>'string', 'flags='=>'int', 'key='=>'string'],
|
||||
'hash_update' => ['bool', 'context'=>'resource', 'data'=>'string'],
|
||||
'hash_update_file' => ['bool', 'context'=>'resource', 'filename'=>'string', 'stream_context='=>'?resource'],
|
||||
'hash_update_stream' => ['int', 'context'=>'resource', 'stream'=>'resource', 'length='=>'int'],
|
||||
'SQLite3::openBlob' => ['resource|false', 'table'=>'string', 'column'=>'string', 'rowid'=>'int', 'database='=>'string'],
|
||||
],
|
||||
'added' => [
|
||||
'DOMNodeList::count' => ['int'],
|
||||
'ftp_append' => ['bool', 'ftp'=>'resource', 'remote_filename'=>'string', 'local_filename'=>'string', 'mode='=>'int'],
|
||||
'hash_hmac_algos' => ['list<string>'],
|
||||
'imagebmp' => ['bool', 'image'=>'resource', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'resource', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagesetclip' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'],
|
||||
'ldap_exop' => ['bool|resource', 'ldap'=>'resource', 'request_oid'=>'string', 'request_data='=>'string', 'controls='=>'array', '&w_response_data='=>'string', '&w_response_oid='=>'string'],
|
||||
'ldap_exop_passwd' => ['bool|string', 'ldap'=>'resource', 'user='=>'string', 'old_password='=>'string', 'new_password='=>'string', '&controls='=>'array'],
|
||||
'ldap_exop_refresh' => ['int|false', 'ldap'=>'resource', 'dn'=>'string', 'ttl'=>'int'],
|
||||
'ldap_exop_whoami' => ['string|false', 'ldap'=>'resource'],
|
||||
'ldap_parse_exop' => ['bool', 'ldap'=>'resource', 'result'=>'resource', '&w_response_data='=>'string', '&w_response_oid='=>'string'],
|
||||
'mb_chr' => ['string|false', 'codepoint'=>'int', 'encoding='=>'string'],
|
||||
'mb_ord' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_scrub' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'oci_register_taf_callback' => ['bool', 'connection'=>'resource', 'callback'=>'callable'],
|
||||
'oci_set_call_timeout' => ['bool', 'connection'=>'resource', 'timeout'=>'int'],
|
||||
'oci_unregister_taf_callback' => ['bool', 'connection'=>'resource'],
|
||||
'ReflectionClass::isIterable' => ['bool'],
|
||||
'sapi_windows_vt100_support' => ['bool', 'stream'=>'resource', 'enable='=>'bool'],
|
||||
'socket_addrinfo_bind' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_connect' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'resource'],
|
||||
'socket_addrinfo_lookup' => ['resource[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'sodium_add' => ['void', '&string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_base642bin' => ['string', 'string'=>'string', 'id'=>'int', 'ignore='=>'string'],
|
||||
'sodium_bin2base64' => ['string', 'string'=>'string', 'id'=>'int'],
|
||||
'sodium_bin2hex' => ['string', 'string'=>'string'],
|
||||
'sodium_compare' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_decrypt' => ['string|false', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_aes256gcm_is_available' => ['bool'],
|
||||
'sodium_crypto_aead_aes256gcm_keygen' => ['string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_decrypt' => ['string', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_decrypt' => ['false|string', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_ietf_keygen' => ['string'],
|
||||
'sodium_crypto_aead_chacha20poly1305_keygen' => ['string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt' => ['string|false', 'ciphertext'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt' => ['string', 'message'=>'string', 'additional_data'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_aead_xchacha20poly1305_ietf_keygen' => ['string'],
|
||||
'sodium_crypto_auth' => ['string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_auth_keygen' => ['string'],
|
||||
'sodium_crypto_auth_verify' => ['bool', 'mac'=>'string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_box' => ['string', 'message'=>'string', 'nonce'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_keypair' => ['string'],
|
||||
'sodium_crypto_box_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_box_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_box_seal' => ['string', 'message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_box_seal_open' => ['string|false', 'ciphertext'=>'string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_box_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_generichash' => ['string', 'message'=>'string', 'key='=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_final' => ['string', '&state'=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_init' => ['string', 'key='=>'string', 'length='=>'int'],
|
||||
'sodium_crypto_generichash_keygen' => ['string'],
|
||||
'sodium_crypto_generichash_update' => ['bool', '&state'=>'string', 'message'=>'string'],
|
||||
'sodium_crypto_kdf_derive_from_key' => ['string', 'subkey_length'=>'int', 'subkey_id'=>'int', 'context'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_kdf_keygen' => ['string'],
|
||||
'sodium_crypto_kx_client_session_keys' => ['array<int,string>', 'client_key_pair'=>'string', 'server_key'=>'string'],
|
||||
'sodium_crypto_kx_keypair' => ['string'],
|
||||
'sodium_crypto_kx_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_kx_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_kx_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_kx_server_session_keys' => ['array<int,string>', 'server_key_pair'=>'string', 'client_key'=>'string'],
|
||||
'sodium_crypto_pwhash' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int', 'algo='=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256' => ['string', 'length'=>'int', 'password'=>'string', 'salt'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'],
|
||||
'sodium_crypto_pwhash_str' => ['string', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_str_needs_rehash' => ['bool', 'password'=>'string', 'opslimit'=>'int', 'memlimit'=>'int'],
|
||||
'sodium_crypto_pwhash_str_verify' => ['bool', 'hash'=>'string', 'password'=>'string'],
|
||||
'sodium_crypto_scalarmult' => ['string', 'n'=>'string', 'p'=>'string'],
|
||||
'sodium_crypto_scalarmult_base' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_secretbox' => ['string', 'message'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretbox_keygen' => ['string'],
|
||||
'sodium_crypto_secretbox_open' => ['string|false', 'ciphertext'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_init_pull' => ['string', 'header'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_init_push' => ['array', 'key'=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_keygen' => ['string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_pull' => ['array', '&state'=>'string', 'ciphertext'=>'string', 'additional_data='=>'string'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_push' => ['string', '&state'=>'string', 'message'=>'string', 'additional_data='=>'string', 'tag='=>'int'],
|
||||
'sodium_crypto_secretstream_xchacha20poly1305_rekey' => ['void', '&state'=>'string'],
|
||||
'sodium_crypto_shorthash' => ['string', 'message'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_shorthash_keygen' => ['string'],
|
||||
'sodium_crypto_sign' => ['string', 'message'=>'string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_detached' => ['string', 'message'=>'string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_ed25519_pk_to_curve25519' => ['string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_ed25519_sk_to_curve25519' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_keypair' => ['string'],
|
||||
'sodium_crypto_sign_keypair_from_secretkey_and_publickey' => ['string', 'secret_key'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_open' => ['string|false', 'signed_message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_sign_publickey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_sign_publickey_from_secretkey' => ['string', 'secret_key'=>'string'],
|
||||
'sodium_crypto_sign_secretkey' => ['string', 'key_pair'=>'string'],
|
||||
'sodium_crypto_sign_seed_keypair' => ['string', 'seed'=>'string'],
|
||||
'sodium_crypto_sign_verify_detached' => ['bool', 'signature'=>'string', 'message'=>'string', 'public_key'=>'string'],
|
||||
'sodium_crypto_stream' => ['string', 'length'=>'int', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_crypto_stream_keygen' => ['string'],
|
||||
'sodium_crypto_stream_xor' => ['string', 'message'=>'string', 'nonce'=>'string', 'key'=>'string'],
|
||||
'sodium_hex2bin' => ['string', 'string'=>'string', 'ignore='=>'string'],
|
||||
'sodium_increment' => ['void', '&string'=>'string'],
|
||||
'sodium_memcmp' => ['int', 'string1'=>'string', 'string2'=>'string'],
|
||||
'sodium_memzero' => ['void', '&string'=>'string'],
|
||||
'sodium_pad' => ['string', 'string'=>'string', 'block_size'=>'int'],
|
||||
'sodium_unpad' => ['string', 'string'=>'string', 'block_size'=>'int'],
|
||||
'stream_isatty' => ['bool', 'stream'=>'resource'],
|
||||
'ZipArchive::count' => ['int'],
|
||||
'ZipArchive::setEncryptionIndex' => ['bool', 'index'=>'int', 'method'=>'int', 'password='=>'string'],
|
||||
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
|
||||
],
|
||||
'changed' => [
|
||||
'hash_copy' => [
|
||||
'old' => ['resource', 'context'=>'resource'],
|
||||
'new' => ['HashContext', 'context'=>'HashContext'],
|
||||
],
|
||||
'hash_final' => [
|
||||
'old' => ['string', 'context'=>'resource', 'binary='=>'bool'],
|
||||
'new' => ['string', 'context'=>'HashContext', 'binary='=>'bool'],
|
||||
],
|
||||
'hash_init' => [
|
||||
'old' => ['resource', 'algo'=>'string', 'flags='=>'int', 'key='=>'string'],
|
||||
'new' => ['HashContext', 'algo'=>'string', 'flags='=>'int', 'key='=>'string'],
|
||||
],
|
||||
'hash_update' => [
|
||||
'old' => ['bool', 'context'=>'resource', 'data'=>'string'],
|
||||
'new' => ['bool', 'context'=>'HashContext', 'data'=>'string'],
|
||||
],
|
||||
'hash_update_file' => [
|
||||
'old' => ['bool', 'context'=>'resource', 'filename'=>'string', 'stream_context='=>'?resource'],
|
||||
'new' => ['bool', 'context'=>'HashContext', 'filename'=>'string', 'stream_context='=>'?resource'],
|
||||
],
|
||||
'hash_update_stream' => [
|
||||
'old' => ['int', 'context'=>'resource', 'stream'=>'resource', 'length='=>'int'],
|
||||
'new' => ['int', 'context'=>'HashContext', 'stream'=>'resource', 'length='=>'int'],
|
||||
],
|
||||
'SQLite3::openBlob' => [
|
||||
'old' => ['resource|false', 'table'=>'string', 'column'=>'string', 'rowid'=>'int', 'database='=>'string'],
|
||||
'new' => ['resource|false', 'table'=>'string', 'column'=>'string', 'rowid'=>'int', 'database='=>'string', 'flags='=>'int'],
|
||||
],
|
||||
],
|
||||
'removed' => [
|
||||
],
|
||||
];
|
||||
|
||||
+41
-39
@@ -16,43 +16,45 @@
|
||||
* TODO: Fix GMP signatures for gmp_div in 7.2, update other deltas.
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'array_key_first' => ['int|string|null', 'array'=>'array'],
|
||||
'array_key_last' => ['int|string|null', 'array'=>'array'],
|
||||
'DateTime::createFromImmutable' => ['static', 'object'=>'DateTimeImmutable'],
|
||||
'fpm_get_status' => ['array|false'],
|
||||
'gmp_binomial' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_lcm' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_perfect_power' => ['bool', 'num'=>'GMP|string|int'],
|
||||
'gmp_kronecker' => ['int', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gc_status' => ['array{runs:int,collected:int,threshold:int,roots:int}'],
|
||||
'hrtime' => ['array{0:int,1:int}|int|false', 'as_number='=>'bool'],
|
||||
'is_countable' => ['bool', 'value'=>'mixed'],
|
||||
'JsonException::__clone' => ['void'],
|
||||
'JsonException::__construct' => ['void'],
|
||||
'JsonException::__toString' => ['string'],
|
||||
'JsonException::__wakeup' => ['void'],
|
||||
'JsonException::getCode' => ['int'],
|
||||
'JsonException::getFile' => ['string'],
|
||||
'JsonException::getLine' => ['int'],
|
||||
'JsonException::getMessage' => ['string'],
|
||||
'JsonException::getPrevious' => ['?Throwable'],
|
||||
'JsonException::getTrace' => ['array<int,array<string,mixed>>'],
|
||||
'JsonException::getTraceAsString' => ['string'],
|
||||
'ldap_add_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_bind_ext' => ['resource|false', 'ldap'=>'resource', 'dn='=>'string', 'password='=>'?string', 'controls='=>'?array'],
|
||||
'ldap_mod_add_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_mod_del_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_mod_replace_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_rename_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'new_rdn'=>'string', 'new_parent'=>'string', 'delete_old_rdn'=>'bool', 'controls='=>'array'],
|
||||
'net_get_interfaces' => ['array<string,array<string,mixed>>|false'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'mixed', 'private_key'=>'mixed', 'key_length='=>'?int'],
|
||||
'session_set_cookie_params\'1' => ['bool', 'lifetime_or_options'=>'array{lifetime?:int,path?:string,domain?:?string,secure?:bool,httponly?:bool}'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'resource', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['resource|false', 'info_id'=>'string'],
|
||||
'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'],
|
||||
'SplPriorityQueue::isCorrupted' => ['bool'],
|
||||
],
|
||||
'old' => [
|
||||
],
|
||||
'added' => [
|
||||
'array_key_first' => ['int|string|null', 'array'=>'array'],
|
||||
'array_key_last' => ['int|string|null', 'array'=>'array'],
|
||||
'DateTime::createFromImmutable' => ['static', 'object'=>'DateTimeImmutable'],
|
||||
'fpm_get_status' => ['array|false'],
|
||||
'gc_status' => ['array{runs:int,collected:int,threshold:int,roots:int}'],
|
||||
'gmp_binomial' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_kronecker' => ['int', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_lcm' => ['GMP', 'num1'=>'GMP|string|int', 'num2'=>'GMP|string|int'],
|
||||
'gmp_perfect_power' => ['bool', 'num'=>'GMP|string|int'],
|
||||
'hrtime' => ['array{0:int,1:int}|int|false', 'as_number='=>'bool'],
|
||||
'is_countable' => ['bool', 'value'=>'mixed'],
|
||||
'JsonException::__clone' => ['void'],
|
||||
'JsonException::__construct' => ['void'],
|
||||
'JsonException::__toString' => ['string'],
|
||||
'JsonException::__wakeup' => ['void'],
|
||||
'JsonException::getCode' => ['int'],
|
||||
'JsonException::getFile' => ['string'],
|
||||
'JsonException::getLine' => ['int'],
|
||||
'JsonException::getMessage' => ['string'],
|
||||
'JsonException::getPrevious' => ['?Throwable'],
|
||||
'JsonException::getTrace' => ['array<int,array<string,mixed>>'],
|
||||
'JsonException::getTraceAsString' => ['string'],
|
||||
'ldap_add_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_bind_ext' => ['resource|false', 'ldap'=>'resource', 'dn='=>'string', 'password='=>'?string', 'controls='=>'?array'],
|
||||
'ldap_mod_add_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_mod_del_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_mod_replace_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'entry'=>'array', 'controls='=>'array'],
|
||||
'ldap_rename_ext' => ['resource|false', 'ldap'=>'resource', 'dn'=>'string', 'new_rdn'=>'string', 'new_parent'=>'string', 'delete_old_rdn'=>'bool', 'controls='=>'array'],
|
||||
'net_get_interfaces' => ['array<string,array<string,mixed>>|false'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'mixed', 'private_key'=>'mixed', 'key_length='=>'?int'],
|
||||
'session_set_cookie_params\'1' => ['bool', 'lifetime_or_options'=>'array{lifetime?:int,path?:string,domain?:?string,secure?:bool,httponly?:bool}'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'resource', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['resource|false', 'info_id'=>'string'],
|
||||
'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'],
|
||||
'SplPriorityQueue::isCorrupted' => ['bool'],
|
||||
],
|
||||
'changed' => [
|
||||
],
|
||||
'removed' => [
|
||||
],
|
||||
];
|
||||
|
||||
+60
-46
@@ -14,50 +14,64 @@
|
||||
* @phan-file-suppress PhanPluginMixedKeyNoKey (read by Phan when analyzing this file)
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'DatePeriod::getRecurrences' => ['int'],
|
||||
'FFI::addr' => ['FFI\CData', '&ptr'=>'FFI\CData'],
|
||||
'FFI::alignof' => ['int', '&ptr'=>'mixed'],
|
||||
'FFI::arrayType' => ['FFI\CType', 'type'=>'string|FFI\CType', 'dimensions'=>'list<int>'],
|
||||
'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', '&ptr'=>''],
|
||||
'FFI::cdef' => ['FFI', 'code='=>'string', 'lib='=>'?string'],
|
||||
'FFI::free' => ['void', '&ptr'=>'FFI\CData'],
|
||||
'FFI::isNull' => ['bool', '&ptr'=>'FFI\CData'],
|
||||
'FFI::load' => ['FFI', 'filename'=>'string'],
|
||||
'FFI::memcmp' => ['int', '&ptr1'=>'FFI\CData|string', '&ptr2'=>'FFI\CData|string', 'size'=>'int'],
|
||||
'FFI::memcpy' => ['void', '&to'=>'FFI\CData', '&from'=>'string|FFI\CData', 'size'=>'int'],
|
||||
'FFI::memset' => ['void', '&ptr'=>'FFI\CData', 'value'=>'int', 'size'=>'int'],
|
||||
'FFI::new' => ['FFI\CData', 'type'=>'string|FFI\CType', 'owned='=>'bool', 'persistent='=>'bool'],
|
||||
'FFI::scope' => ['FFI', 'name'=>'string'],
|
||||
'FFI::sizeof' => ['int', '&ptr'=>'FFI\CData|FFI\CType'],
|
||||
'FFI::string' => ['string', '&ptr'=>'FFI\CData', 'size='=>'int'],
|
||||
'FFI::typeof' => ['FFI\CType', '&ptr'=>'FFI\CData'],
|
||||
'FFI::type' => ['FFI\CType', 'type'=>'string'],
|
||||
'get_mangled_object_vars' => ['array', 'object'=>'object'],
|
||||
'imagecreatefromtga' => ['resource|false', 'filename'=>'string'],
|
||||
'openssl_x509_verify' => ['int', 'certificate'=>'string|resource', 'public_key'=>'string|resource'],
|
||||
'password_algos' => ['list<string>'],
|
||||
'password_hash' => ['string|false|null', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'pcntl_unshare' => ['bool', 'flags'=>'int'],
|
||||
'preg_replace_callback' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
'proc_open' => ['resource|false', 'command'=>'string|string[]', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
'ReflectionReference::fromArrayElement' => ['?ReflectionReference', 'array'=>'array', 'key'=>'int|string'],
|
||||
'ReflectionReference::getId' => ['string'],
|
||||
'sapi_windows_set_ctrl_handler' => ['bool', 'handler'=>'callable(int):void', 'add='=>'bool'],
|
||||
'SQLite3Stmt::getSQL' => ['string', 'expand='=>'bool'],
|
||||
'SQLite3::backup' => ['bool', 'destination'=>'SQLite3', 'sourceDatabase='=>'string', 'destinationDatabase='=>'string'],
|
||||
'strip_tags' => ['string', 'string'=>'string', 'allowed_tags='=>'string|string[]'],
|
||||
'WeakReference::create' => ['WeakReference', 'object'=>'object'],
|
||||
'WeakReference::get' => ['?object'],
|
||||
],
|
||||
'old' => [
|
||||
'password_hash' => ['string|false|null', 'password'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'password_needs_rehash' => ['bool', 'hash'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'preg_replace_callback' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'preg_replace_callback_array' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'proc_open' => ['resource|false', 'command'=>'string', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
'strip_tags' => ['string', 'string'=>'string', 'allowed_tags='=>'string'],
|
||||
],
|
||||
'added' => [
|
||||
'DatePeriod::getRecurrences' => ['int'],
|
||||
'FFI::addr' => ['FFI\CData', '&ptr'=>'FFI\CData'],
|
||||
'FFI::alignof' => ['int', '&ptr'=>'mixed'],
|
||||
'FFI::arrayType' => ['FFI\CType', 'type'=>'string|FFI\CType', 'dimensions'=>'list<int>'],
|
||||
'FFI::cast' => ['FFI\CData', 'type'=>'string|FFI\CType', '&ptr'=>''],
|
||||
'FFI::cdef' => ['FFI', 'code='=>'string', 'lib='=>'?string'],
|
||||
'FFI::free' => ['void', '&ptr'=>'FFI\CData'],
|
||||
'FFI::isNull' => ['bool', '&ptr'=>'FFI\CData'],
|
||||
'FFI::load' => ['FFI', 'filename'=>'string'],
|
||||
'FFI::memcmp' => ['int', '&ptr1'=>'FFI\CData|string', '&ptr2'=>'FFI\CData|string', 'size'=>'int'],
|
||||
'FFI::memcpy' => ['void', '&to'=>'FFI\CData', '&from'=>'string|FFI\CData', 'size'=>'int'],
|
||||
'FFI::memset' => ['void', '&ptr'=>'FFI\CData', 'value'=>'int', 'size'=>'int'],
|
||||
'FFI::new' => ['FFI\CData', 'type'=>'string|FFI\CType', 'owned='=>'bool', 'persistent='=>'bool'],
|
||||
'FFI::scope' => ['FFI', 'name'=>'string'],
|
||||
'FFI::sizeof' => ['int', '&ptr'=>'FFI\CData|FFI\CType'],
|
||||
'FFI::string' => ['string', '&ptr'=>'FFI\CData', 'size='=>'int'],
|
||||
'FFI::type' => ['FFI\CType', 'type'=>'string'],
|
||||
'FFI::typeof' => ['FFI\CType', '&ptr'=>'FFI\CData'],
|
||||
'get_mangled_object_vars' => ['array', 'object'=>'object'],
|
||||
'imagecreatefromtga' => ['resource|false', 'filename'=>'string'],
|
||||
'openssl_x509_verify' => ['int', 'certificate'=>'string|resource', 'public_key'=>'string|resource'],
|
||||
'password_algos' => ['list<string>'],
|
||||
'pcntl_unshare' => ['bool', 'flags'=>'int'],
|
||||
'ReflectionReference::fromArrayElement' => ['?ReflectionReference', 'array'=>'array', 'key'=>'int|string'],
|
||||
'ReflectionReference::getId' => ['string'],
|
||||
'sapi_windows_set_ctrl_handler' => ['bool', 'handler'=>'callable(int):void', 'add='=>'bool'],
|
||||
'SQLite3::backup' => ['bool', 'destination'=>'SQLite3', 'sourceDatabase='=>'string', 'destinationDatabase='=>'string'],
|
||||
'SQLite3Stmt::getSQL' => ['string', 'expand='=>'bool'],
|
||||
'WeakReference::create' => ['WeakReference', 'object'=>'object'],
|
||||
'WeakReference::get' => ['?object'],
|
||||
],
|
||||
'changed' => [
|
||||
'password_hash' => [
|
||||
'old' => ['string|false|null', 'password'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'new' => ['string|false|null', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
],
|
||||
'password_needs_rehash' => [
|
||||
'old' => ['bool', 'hash'=>'string', 'algo'=>'int', 'options='=>'array'],
|
||||
'new' => ['bool', 'hash'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
],
|
||||
'preg_replace_callback' => [
|
||||
'old' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'new' => ['string|string[]', 'pattern'=>'string|array', 'callback'=>'callable(array):string', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'preg_replace_callback_array' => [
|
||||
'old' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int'],
|
||||
'new' => ['string|string[]', 'pattern'=>'array<string,callable(array):string>', 'subject'=>'string|array', 'limit='=>'int', '&w_count='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'proc_open' => [
|
||||
'old' => ['resource|false', 'command'=>'string', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
'new' => ['resource|false', 'command'=>'string|string[]', 'descriptor_spec'=>'array', '&w_pipes'=>'resource[]', 'cwd='=>'?string', 'env_vars='=>'?array', 'options='=>'array'],
|
||||
],
|
||||
'strip_tags' => [
|
||||
'old' => ['string', 'string'=>'string', 'allowed_tags='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'allowed_tags='=>'string|string[]'],
|
||||
],
|
||||
],
|
||||
'removed' => [
|
||||
],
|
||||
];
|
||||
|
||||
+1683
-889
@@ -3,899 +3,1693 @@
|
||||
/**
|
||||
* This contains the information needed to convert the function signatures for php 8.0 to php 7.4 (and vice versa)
|
||||
*
|
||||
* This has two sections.
|
||||
* The 'new' section contains function/method names from FunctionSignatureMap (And alternates, if applicable) that do not exist in php7.4 or have different signatures in php 8.0.
|
||||
* If they were just updated, the function/method will be present in the 'added' signatures.
|
||||
* The 'old' signatures contains the signatures that are different in php 7.4.
|
||||
* Functions are expected to be removed only in major releases of php.
|
||||
*
|
||||
* TODO: Add remaining functions
|
||||
* This file has three sections.
|
||||
* The 'added' section contains function/method names from FunctionSignatureMap (And alternates, if applicable) that do not exist in php 7.4
|
||||
* The 'removed' section contains the signatures that were removed in php 8.0
|
||||
* The 'changed' section contains functions for which the signature has changed for php 8.0.
|
||||
* Each function in the 'changed' section has an 'old' and a 'new' section,
|
||||
* representing the function as it was in PHP 7.4 and in PHP 8.0, respectively
|
||||
*
|
||||
* @see FunctionSignatureMap.php
|
||||
*
|
||||
* @phan-file-suppress PhanPluginMixedKeyNoKey (read by Phan when analyzing this file)
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'apache_request_headers' => ['array<string,mixed>'],
|
||||
'array_combine' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array'],
|
||||
'bcdiv' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcmod' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcpowmod' => ['string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
'collator_get_strength' => ['int', 'object'=>'collator'],
|
||||
'com_load_typelib' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'true'],
|
||||
'count_chars' => ['array<int,int>|string', 'string'=>'string', 'mode='=>'int'],
|
||||
'curl_close' => ['void', 'handle'=>'CurlHandle'],
|
||||
'curl_copy_handle' => ['CurlHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_errno' => ['int', 'handle'=>'CurlHandle'],
|
||||
'curl_error' => ['string', 'handle'=>'CurlHandle'],
|
||||
'curl_escape' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
'curl_exec' => ['bool|string', 'handle'=>'CurlHandle'],
|
||||
'curl_getinfo' => ['mixed', 'handle'=>'CurlHandle', 'option='=>'int'],
|
||||
'curl_init' => ['CurlHandle|false', 'url='=>'string'],
|
||||
'curl_multi_add_handle' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_close' => ['void', 'multi_handle'=>'CurlMultiHandle'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'CurlMultiHandle'],
|
||||
'curl_multi_exec' => ['int', 'multi_handle'=>'CurlMultiHandle', '&w_still_running'=>'int'],
|
||||
'curl_multi_getcontent' => ['string', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_info_read' => ['array|false', 'multi_handle'=>'CurlMultiHandle', '&w_queued_messages='=>'int'],
|
||||
'curl_multi_init' => ['CurlMultiHandle'],
|
||||
'curl_multi_remove_handle' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
'curl_multi_select' => ['int', 'multi_handle'=>'CurlMultiHandle', 'timeout='=>'float'],
|
||||
'curl_multi_setopt' => ['bool', 'multi_handle'=>'CurlMultiHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_pause' => ['int', 'handle'=>'CurlHandle', 'flags'=>'int'],
|
||||
'curl_reset' => ['void', 'handle'=>'CurlHandle'],
|
||||
'curl_setopt' => ['bool', 'handle'=>'CurlHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_setopt_array' => ['bool', 'handle'=>'CurlHandle', 'options'=>'array'],
|
||||
'curl_share_close' => ['void', 'share_handle'=>'CurlShareHandle'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'CurlShareHandle'],
|
||||
'curl_share_init' => ['CurlShareHandle'],
|
||||
'curl_share_setopt' => ['bool', 'share_handle'=>'CurlShareHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_unescape' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
'date_add' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_date_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
'date_diff' => ['DateInterval', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'date_format' => ['string', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
'date_isodate_set' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
'date_parse' => ['array<string,mixed>', 'datetime'=>'string'],
|
||||
'date_sub' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_sun_info' => ['array<string,bool|int>', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
'date_time_set' => ['DateTime', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
'date_timestamp_set' => ['DateTime', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
'date_timezone_set' => ['DateTime', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
'debug_backtrace' => ['list<array>', 'options='=>'int', 'limit='=>'int'],
|
||||
'debug_print_backtrace' => ['void', 'options='=>'int', 'limit='=>'int'],
|
||||
'deflate_add' => ['string|false', 'context'=>'DeflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'deflate_init' => ['DeflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'dom_import_simplexml' => ['DOMElement|null', 'node'=>'SimpleXMLElement'],
|
||||
'easter_date' => ['int', 'year='=>'?int', 'mode='=>'int'],
|
||||
'enchant_broker_describe' => ['array', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_dict_exists' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
'enchant_broker_free' => ['bool', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_free_dict' => ['bool', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_broker_get_dict_path' => ['string', 'broker'=>'EnchantBroker', 'type'=>'int'],
|
||||
'enchant_broker_get_error' => ['string|false', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_init' => ['EnchantBroker|false'],
|
||||
'enchant_broker_list_dicts' => ['array', 'broker'=>'EnchantBroker'],
|
||||
'enchant_broker_request_dict' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
'enchant_broker_request_pwl_dict' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'filename'=>'string'],
|
||||
'enchant_broker_set_dict_path' => ['bool', 'broker'=>'EnchantBroker', 'type'=>'int', 'path'=>'string'],
|
||||
'enchant_broker_set_ordering' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string', 'ordering'=>'string'],
|
||||
'enchant_dict_add_to_personal' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_add_to_session' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_check' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_describe' => ['array', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_dict_get_error' => ['string', 'dictionary'=>'EnchantDictionary'],
|
||||
'enchant_dict_is_in_session' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'enchant_dict_quick_check' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
'enchant_dict_store_replacement' => ['void', 'dictionary'=>'EnchantDictionary', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
'enchant_dict_suggest' => ['array', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
'fdiv' => ['float', 'num1'=>'float', 'num2'=>'float'],
|
||||
'fpassthru' => ['int', 'stream'=>'resource'],
|
||||
'get_debug_type' => ['string', 'value'=>'mixed'],
|
||||
'get_resource_id' => ['int', 'resource'=>'resource'],
|
||||
'gmdate' => ['string', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'gmmktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'],
|
||||
'gmp_binomial' => ['GMP', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_export' => ['string', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_import' => ['GMP', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_random' => ['GMP', 'limiter='=>'int'],
|
||||
'gmp_random_seed' => ['void', 'seed'=>'GMP|string|int'],
|
||||
'gzpassthru' => ['int', 'stream'=>'resource'],
|
||||
'hash_hkdf' => ['string', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'imageaffine' => ['false|GdImage', 'image'=>'GdImage', 'affine'=>'array', 'clip='=>'array'],
|
||||
'imagealphablending' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imageantialias' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imagearc' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
'imagebmp' => ['bool', 'image'=>'GdImage', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagechar' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecharup' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecolorallocatealpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorallocate' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorat' => ['int|false', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int'],
|
||||
'imagecolorclosestalpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorclosesthwb' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorclosest' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolordeallocate' => ['bool', 'image'=>'GdImage', 'color'=>'int'],
|
||||
'imagecolorexactalpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorexact' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolormatch' => ['bool', 'image1'=>'GdImage', 'image2'=>'GdImage'],
|
||||
'imagecolorresolvealpha' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorresolve' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorset' => ['void', 'image'=>'GdImage', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
'imagecolorsforindex' => ['array<string,int>|false', 'image'=>'GdImage', 'color'=>'int'],
|
||||
'imagecolorstotal' => ['int', 'image'=>'GdImage'],
|
||||
'imagecolortransparent' => ['int|null', 'image'=>'GdImage', 'color='=>'int'],
|
||||
'imageconvolution' => ['bool', 'image'=>'GdImage', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
'imagecopy' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopymerge' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopymergegray' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopyresampled' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopyresized' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecreate' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefrombmp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgd2' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgd2part' => ['false|GdImage', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefromgd' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromgif' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromjpeg' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefrompng' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromstring' => ['false|GdImage', 'data'=>'string'],
|
||||
'imagecreatefromtga' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromwbmp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromwebp' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromxbm' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatefromxpm' => ['false|GdImage', 'filename'=>'string'],
|
||||
'imagecreatetruecolor' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecropauto' => ['false|GdImage', 'image'=>'GdImage', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
'imagecrop' => ['false|GdImage', 'image'=>'GdImage', 'rectangle'=>'array'],
|
||||
'imagedashedline' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagedestroy' => ['bool', 'image'=>'GdImage'],
|
||||
'imageellipse' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefill' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagefilledarc' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
'imagefilledellipse' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefilledpolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagefilledrectangle' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagefilltoborder' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
'imagefilter' => ['bool', 'image'=>'GdImage', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
'imageflip' => ['bool', 'image'=>'GdImage', 'mode'=>'int'],
|
||||
'imagefttext' => ['array<int,int>|false', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagegammacorrect' => ['bool', 'image'=>'GdImage', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
'imagegd2' => ['bool', 'image'=>'GdImage', 'file='=>'string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
'imagegd' => ['bool', 'image'=>'GdImage', 'file='=>'string'],
|
||||
'imagegetclip' => ['array<int,int>', 'image'=>'GdImage'],
|
||||
'imagegetinterpolation' => ['int', 'image'=>'GdImage'],
|
||||
'imagegif' => ['bool', 'image'=>'GdImage', 'file='=>'?string'],
|
||||
'imagegrabscreen' => ['false|GdImage'],
|
||||
'imagegrabwindow' => ['false|GdImage', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
'imageinterlace' => ['int', 'image'=>'GdImage', 'enable='=>'?bool'],
|
||||
'imageistruecolor' => ['bool', 'image'=>'GdImage'],
|
||||
'imagejpeg' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagelayereffect' => ['bool', 'image'=>'GdImage', 'effect'=>'int'],
|
||||
'imageline' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagepalettecopy' => ['void', 'dst'=>'GdImage', 'src'=>'GdImage'],
|
||||
'imagepalettetotruecolor' => ['bool', 'image'=>'GdImage'],
|
||||
'imagepng' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
'imagepolygon' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagerectangle' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'GdImage', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagerotate' => ['false|GdImage', 'image'=>'GdImage', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
'imagesavealpha' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
'imagescale' => ['false|GdImage', 'image'=>'GdImage', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
'imagesetbrush' => ['bool', 'image'=>'GdImage', 'brush'=>'GdImage'],
|
||||
'imagesetclip' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'x2'=>'int', 'y1'=>'int', 'y2'=>'int'],
|
||||
'imagesetinterpolation' => ['bool', 'image'=>'GdImage', 'method='=>'int'],
|
||||
'imagesetpixel' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagesetstyle' => ['bool', 'image'=>'GdImage', 'style'=>'non-empty-array'],
|
||||
'imagesetthickness' => ['bool', 'image'=>'GdImage', 'thickness'=>'int'],
|
||||
'imagesettile' => ['bool', 'image'=>'GdImage', 'tile'=>'GdImage'],
|
||||
'imagestring' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagestringup' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagesx' => ['int', 'image'=>'GdImage'],
|
||||
'imagesy' => ['int', 'image'=>'GdImage'],
|
||||
'imagetruecolortopalette' => ['bool', 'image'=>'GdImage', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
'imagettftext' => ['false|array<int,int>', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagewbmp' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
'imagewebp' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagexbm' => ['bool', 'image'=>'GdImage', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
'imap_mailboxmsginfo' => ['stdClass', 'imap'=>'resource'],
|
||||
'inflate_add' => ['string|false', 'context'=>'InflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'inflate_get_read_len' => ['int', 'context'=>'InflateContext'],
|
||||
'inflate_get_status' => ['int', 'context'=>'InflateContext'],
|
||||
'inflate_init' => ['InflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'ldap_count_entries' => ['int', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_get_attributes' => ['array', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'mb_convert_case' => ['string', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
'mb_convert_kana' => ['string', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
'mb_decode_numericentity' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string'],
|
||||
'mb_encode_mimeheader' => ['string', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
'mb_encode_numericentity' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
'mb_encoding_aliases' => ['list<string>', 'encoding'=>'string'],
|
||||
'mb_ereg' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_eregi' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_scrub' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strcut' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
'mb_strimwidth' => ['string', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
'mb_strlen' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtolower' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtoupper' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strwidth' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_substr' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
'mb_substr_count' => ['int', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
'mktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'],
|
||||
'msg_get_queue' => ['SysvMessageQueue', 'key'=>'int', 'permissions='=>'int'],
|
||||
'msg_remove_queue' => ['bool', 'queue'=>'SysvMessageQueue'],
|
||||
'msg_send' => ['bool', 'queue'=>'SysvMessageQueue', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
'msg_set_queue' => ['bool', 'queue'=>'SysvMessageQueue', 'data'=>'array'],
|
||||
'msg_stat_queue' => ['array', 'queue'=>'SysvMessageQueue'],
|
||||
'mysqli_fetch_fields' => ['array<int,object>', 'result'=>'mysqli_result'],
|
||||
'mysqli_get_client_stats' => ['array'],
|
||||
'mysqli_get_connection_stats' => ['array', 'mysql'=>'mysqli'],
|
||||
'mysqli_stmt_attr_get' => ['int', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
'numfmt_create' => ['NumberFormatter|null', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
'ob_implicit_flush' => ['void', 'enable='=>'bool'],
|
||||
'oci_collection_append' => ['bool', 'collection'=>'OCICollection', 'value'=>'string'],
|
||||
'oci_collection_assign' => ['bool', 'to'=>'OCICollection', 'from'=>'OCICollection'],
|
||||
'oci_collection_element_assign' => ['bool', 'collection'=>'OCICollection', 'index'=>'int', 'value'=>'string'],
|
||||
'oci_collection_element_get' => ['string', 'collection'=>'OCICollection', 'index'=>'int'],
|
||||
'oci_collection_max' => ['int', 'collection'=>'OCICollection'],
|
||||
'oci_collection_size' => ['int', 'collection'=>'OCICollection'],
|
||||
'oci_collection_trim' => ['bool', 'collection'=>'OCICollection', 'num'=>'int'],
|
||||
'oci_fetch_all' => ['int', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
'oci_free_collection' => ['bool', 'collection'=>'OCICollection'],
|
||||
'oci_free_descriptor' => ['bool', 'lob'=>'OCILob'],
|
||||
'oci_new_descriptor' => ['?OCILob', 'connection'=>'resource', 'type='=>'int'],
|
||||
'openssl_cipher_iv_length' => ['int|false', 'cipher_algo'=>'string'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', '&w_output'=>'OpenSSLAsymmetricKey', 'no_text='=>'bool'],
|
||||
'openssl_csr_export_to_file' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_get_public_key' => ['OpenSSLAsymmetricKey|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
'openssl_csr_get_subject' => ['array|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
'openssl_csr_new' => ['OpenSSLCertificateSigningRequest|false', 'distinguished_names'=>'array', '&w_private_key'=>'OpenSSLAsymmetricKey', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
'openssl_csr_sign' => ['OpenSSLCertificate|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'ca_certificate'=>'string|OpenSSLCertificate|null', 'private_key'=>'string|OpenSSLAsymmetricKey|OpenSSLCertificate|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
'openssl_decrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', 'tag='=>'string', 'aad='=>'string'],
|
||||
'openssl_dh_compute_key' => ['string|false', 'public_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_digest' => ['string|false', 'data'=>'string', 'digest_algo'=>'string', 'binary='=>'bool'],
|
||||
'openssl_encrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', '&w_tag='=>'string', 'aad='=>'string', 'tag_length='=>'int'],
|
||||
'openssl_error_string' => ['string|false'],
|
||||
'openssl_free_key' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_get_cert_locations' => ['array'],
|
||||
'openssl_get_cipher_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_curve_names' => ['list<string>'],
|
||||
'openssl_get_md_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_privatekey' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_get_publickey' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'openssl_open' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
'openssl_pbkdf2' => ['string|false', 'password'=>'string', 'salt'=>'string', 'key_length'=>'int', 'iterations'=>'int', 'digest_algo='=>'string'],
|
||||
'openssl_pkcs12_export' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_export_to_file' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_read' => ['bool', 'pkcs12'=>'string', '&w_certificates'=>'array', 'passphrase'=>'string'],
|
||||
'openssl_pkcs7_decrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key='=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|null|string'],
|
||||
'openssl_pkcs7_encrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
'openssl_pkcs7_read' => ['bool', 'input_filename'=>'string', '&w_certificates'=>'array'],
|
||||
'openssl_pkcs7_sign' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
'openssl_pkcs7_verify' => ['bool|int', 'input_filename'=>'string', 'flags'=>'int', 'signers_certificates_filename='=>'string', 'ca_info='=>'array', 'untrusted_certificates_filename='=>'string', 'content='=>'string', 'output_filename='=>'string'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'key_length='=>'int'],
|
||||
'openssl_pkey_export' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_export_to_file' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_free' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_pkey_get_details' => ['array|false', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
'openssl_pkey_get_private' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_pkey_get_public' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|string'],
|
||||
'openssl_pkey_new' => ['OpenSSLAsymmetricKey|false', 'options='=>'array'],
|
||||
'openssl_private_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_private_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_public_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_public_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
'openssl_random_pseudo_bytes' => ['string', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
'openssl_seal' => ['int|false', 'data'=>'string', '&w_sealed_data'=>'string', '&rw_encrypted_keys'=>'array', 'public_key'=>'array', 'cipher_algo'=>'string', '&iv='=>'string'],
|
||||
'openssl_sign' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
'openssl_spki_export' => ['false|string', 'spki'=>'string'],
|
||||
'openssl_spki_export_challenge' => ['false|string', 'spki'=>'string'],
|
||||
'openssl_spki_new' => ['false|string', 'private_key'=>'OpenSSLAsymmetricKey', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
'openssl_spki_verify' => ['bool', 'spki'=>'string'],
|
||||
'openssl_verify' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
'openssl_x509_check_private_key' => ['bool', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'openssl_x509_checkpurpose' => ['bool|int', 'certificate'=>'string|OpenSSLCertificate', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
'openssl_x509_export' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_export_to_file' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_fingerprint' => ['string|false', 'certificate'=>'string|OpenSSLCertificate', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
'openssl_x509_free' => ['void', 'certificate'=>'OpenSSLCertificate'],
|
||||
'openssl_x509_parse' => ['array|false', 'certificate'=>'string|OpenSSLCertificate', 'short_names='=>'bool'],
|
||||
'openssl_x509_read' => ['OpenSSLCertificate|false', 'certificate'=>'string|OpenSSLCertificate'],
|
||||
'openssl_x509_verify' => ['int', 'certificate'=>'OpenSSLCertificate|string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
'parse_str' => ['void', 'string'=>'string', '&w_result'=>'array'],
|
||||
'password_hash' => ['string', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'PhpToken::getTokenName' => ['string'],
|
||||
'PhpToken::is' => ['bool', 'kind'=>'string|int|string[]|int[]'],
|
||||
'PhpToken::isIgnorable' => ['bool'],
|
||||
'PhpToken::tokenize' => ['list<PhpToken>', 'code'=>'string', 'flags='=>'int'],
|
||||
'pg_fetch_all' => ['array<int,array>', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_fetch_all_columns' => ['array<int,?string>', 'result'=>'resource', 'field='=>'int'],
|
||||
'proc_get_status' => ['array<string,int|string|bool>', 'process'=>'resource'],
|
||||
'ReflectionClass::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionClassConstant::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionFunctionAbstract::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionParameter::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionProperty::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'sem_acquire' => ['bool', 'semaphore'=>'SysvSemaphore', 'non_blocking='=>'bool'],
|
||||
'sem_get' => ['SysvSemaphore|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
'sem_release' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
'sem_remove' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
'shm_attach' => ['SysvSharedMemory', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
'shm_detach' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
'shm_get_var' => ['mixed', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shm_has_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shm_put_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int', 'value'=>'mixed'],
|
||||
'shm_remove' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
'shm_remove_var' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
'shmop_close' => ['void', 'shmop'=>'Shmop'],
|
||||
'shmop_delete' => ['bool', 'shmop'=>'Shmop'],
|
||||
'shmop_open' => ['Shmop', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
'shmop_read' => ['string', 'shmop'=>'Shmop', 'offset'=>'int', 'size'=>'int'],
|
||||
'shmop_size' => ['int', 'shmop'=>'Shmop'],
|
||||
'shmop_write' => ['int', 'shmop'=>'Shmop', 'data'=>'string', 'offset'=>'int'],
|
||||
'simplexml_import_dom' => ['SimpleXMLElement', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
'sleep' => ['int', 'seconds'=>'int'],
|
||||
'socket_accept' => ['Socket|false', 'socket'=>'Socket'],
|
||||
'socket_addrinfo_bind' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_connect' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'AddressInfo'],
|
||||
'socket_addrinfo_lookup' => ['AddressInfo[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'socket_bind' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_clear_error' => ['void', 'socket='=>'Socket'],
|
||||
'socket_close' => ['void', 'socket'=>'Socket'],
|
||||
'socket_connect' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_create' => ['Socket|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
'socket_create_listen' => ['Socket|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
'socket_create_pair' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'Socket[]'],
|
||||
'socket_export_stream' => ['resource|false', 'socket'=>'Socket'],
|
||||
'socket_get_option' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getopt' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getpeername' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_getsockname' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_import_stream' => ['Socket|false', 'stream'=>'resource'],
|
||||
'socket_last_error' => ['int', 'socket='=>'Socket'],
|
||||
'socket_listen' => ['bool', 'socket'=>'Socket', 'backlog='=>'int'],
|
||||
'socket_read' => ['string|false', 'socket'=>'Socket', 'length'=>'int', 'mode='=>'int'],
|
||||
'socket_recv' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_recvfrom' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_recvmsg' => ['int|false', 'socket'=>'Socket', '&w_message'=>'array', 'flags='=>'int'],
|
||||
'socket_select' => ['int|false', '&rw_read'=>'Socket[]|null', '&rw_write'=>'Socket[]|null', '&rw_except'=>'Socket[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_send' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_sendmsg' => ['int|false', 'socket'=>'Socket', 'message'=>'array', 'flags='=>'int'],
|
||||
'socket_sendto' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_set_block' => ['bool', 'socket'=>'Socket'],
|
||||
'socket_set_nonblock' => ['bool', 'socket'=>'Socket'],
|
||||
'socket_set_option' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_set_timeout' => ['bool', 'stream'=>'resource', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_setopt' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_shutdown' => ['bool', 'socket'=>'Socket', 'mode='=>'int'],
|
||||
'socket_strerror' => ['string', 'error_code'=>'int'],
|
||||
'socket_write' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length='=>'int'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'Socket', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['Socket|false', 'info_id'=>'string'],
|
||||
'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'],
|
||||
'substr' => ['string', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
'str_contains' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_ends_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_starts_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'stream_bucket_new' => ['object', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
'stream_set_chunk_size' => ['int', 'stream'=>'resource', 'size'=>'int'],
|
||||
'stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
'substr_compare' => ['int', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
'timezone_identifiers_list' => ['list<string>', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
'timezone_offset_get' => ['int', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'?(\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\')'],
|
||||
'xml_get_current_byte_index' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_current_column_number' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_current_line_number' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_get_error_code' => ['int', 'parser'=>'XMLParser'],
|
||||
'xml_parse_into_struct' => ['int', 'parser'=>'XMLParser', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
'xml_parse' => ['int', 'parser'=>'XMLParser', 'data'=>'string', 'is_final='=>'bool'],
|
||||
'xml_parser_create' => ['XMLParser', 'encoding='=>'string'],
|
||||
'xml_parser_create_ns' => ['XMLParser', 'encoding='=>'string', 'separator='=>'string'],
|
||||
'xml_parser_free' => ['bool', 'parser'=>'XMLParser'],
|
||||
'xml_parser_get_option' => ['int|string', 'parser'=>'XMLParser', 'option'=>'int'],
|
||||
'xml_parser_set_option' => ['bool', 'parser'=>'XMLParser', 'option'=>'int', 'value'=>'int|string'],
|
||||
'xml_set_character_data_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_element_handler' => ['bool', 'parser'=>'XMLParser', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
'xml_set_default_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_end_namespace_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_external_entity_ref_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_notation_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_object' => ['bool', 'parser'=>'XMLParser', 'object'=>'object'],
|
||||
'xml_set_processing_instruction_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_start_namespace_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xml_set_unparsed_entity_decl_handler' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
'xmlwriter_end_attribute' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_cdata' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_comment' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_document' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_attlist' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_dtd_entity' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_end_pi' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_flush' => ['int|string', 'writer'=>'XMLWriter', 'empty='=>'bool'],
|
||||
'xmlwriter_full_end_element' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_open_memory' => ['XMLWriter'],
|
||||
'xmlwriter_open_uri' => ['XMLWriter', 'uri'=>'string'],
|
||||
'xmlwriter_output_memory' => ['string', 'writer'=>'XMLWriter', 'flush='=>'bool'],
|
||||
'xmlwriter_set_indent' => ['bool', 'writer'=>'XMLWriter', 'enable'=>'bool'],
|
||||
'xmlwriter_set_indent_string' => ['bool', 'writer'=>'XMLWriter', 'indentation'=>'string'],
|
||||
'xmlwriter_start_attribute' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_attribute_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_cdata' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_start_comment' => ['bool', 'writer'=>'XMLWriter'],
|
||||
'xmlwriter_start_document' => ['bool', 'writer'=>'XMLWriter', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
'xmlwriter_start_dtd' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
'xmlwriter_start_dtd_attlist' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_dtd_element' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string'],
|
||||
'xmlwriter_start_dtd_entity' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'isParam'=>'bool'],
|
||||
'xmlwriter_start_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
'xmlwriter_start_element_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_pi' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string'],
|
||||
'xmlwriter_text' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_attribute' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_attribute_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_cdata' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_comment' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_dtd_attlist' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_entity' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
'xmlwriter_write_element' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_element_ns' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_pi' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_raw' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
],
|
||||
'old' => [
|
||||
'apache_request_headers' => ['array<string,mixed>|false'],
|
||||
'array_combine' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array|ArrayObject'],
|
||||
'bcdiv' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcmod' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'bcpowmod' => ['?string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
'com_load_typelib' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'bool'],
|
||||
'count_chars' => ['array<int,int>|false|string', 'string'=>'string', 'mode='=>'int'],
|
||||
'create_function' => ['string', 'args'=>'string', 'code'=>'string'],
|
||||
'collator_get_strength' => ['int|false', 'object'=>'collator'],
|
||||
'curl_close' => ['void', 'handle'=>'resource'],
|
||||
'curl_copy_handle' => ['resource', 'handle'=>'resource'],
|
||||
'curl_errno' => ['int', 'handle'=>'resource'],
|
||||
'curl_error' => ['string', 'handle'=>'resource'],
|
||||
'curl_escape' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'curl_exec' => ['bool|string', 'handle'=>'resource'],
|
||||
'curl_getinfo' => ['mixed', 'handle'=>'resource', 'option='=>'int'],
|
||||
'curl_init' => ['resource|false', 'url='=>'string'],
|
||||
'curl_multi_add_handle' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'curl_multi_close' => ['void', 'multi_handle'=>'resource'],
|
||||
'curl_multi_errno' => ['int', 'multi_handle'=>'resource'],
|
||||
'curl_multi_exec' => ['int', 'multi_handle'=>'resource', '&w_still_running'=>'int'],
|
||||
'curl_multi_getcontent' => ['string', 'handle'=>'resource'],
|
||||
'curl_multi_info_read' => ['array|false', 'multi_handle'=>'resource', '&w_queued_messages='=>'int'],
|
||||
'curl_multi_init' => ['resource'],
|
||||
'curl_multi_remove_handle' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'curl_multi_select' => ['int', 'multi_handle'=>'resource', 'timeout='=>'float'],
|
||||
'curl_multi_setopt' => ['bool', 'multi_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_pause' => ['int', 'handle'=>'resource', 'flags'=>'int'],
|
||||
'curl_reset' => ['void', 'handle'=>'resource'],
|
||||
'curl_setopt' => ['bool', 'handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_setopt_array' => ['bool', 'handle'=>'resource', 'options'=>'array'],
|
||||
'curl_share_close' => ['void', 'share_handle'=>'resource'],
|
||||
'curl_share_errno' => ['int', 'share_handle'=>'resource'],
|
||||
'curl_share_init' => ['resource'],
|
||||
'curl_share_setopt' => ['bool', 'share_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'curl_unescape' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'date_add' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_date_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
'date_diff' => ['DateInterval|false', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'date_format' => ['string|false', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
'date_isodate_set' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
'date_parse' => ['array<string,mixed>|false', 'datetime'=>'string'],
|
||||
'date_sub' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'date_sun_info' => ['array<string,bool|int>|false', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
'date_time_set' => ['DateTime|false', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
'date_timestamp_set' => ['DateTime|false', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
'date_timezone_set' => ['DateTime|false', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
'debug_backtrace' => ['list<array>', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'debug_print_backtrace' => ['void', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'deflate_add' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'deflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'dom_import_simplexml' => ['DOMElement|false|null', 'node'=>'SimpleXMLElement'],
|
||||
'easter_date' => ['int', 'year='=>'int', 'mode='=>'int'],
|
||||
'each' => ['array{0:int|string,key:int|string,1:mixed,value:mixed}', '&r_arr'=>'array'],
|
||||
'enchant_broker_describe' => ['array', 'broker'=>'resource'],
|
||||
'enchant_broker_dict_exists' => ['bool', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'enchant_broker_free' => ['bool', 'broker'=>'resource'],
|
||||
'enchant_broker_free_dict' => ['bool', 'dictionary'=>'resource'],
|
||||
'enchant_broker_get_dict_path' => ['string', 'broker'=>'resource', 'type'=>'int'],
|
||||
'enchant_broker_get_error' => ['string|false', 'broker'=>'resource'],
|
||||
'enchant_broker_init' => ['resource|false'],
|
||||
'enchant_broker_list_dicts' => ['array', 'broker'=>'resource'],
|
||||
'enchant_broker_request_dict' => ['resource|false', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'enchant_broker_request_pwl_dict' => ['resource|false', 'broker'=>'resource', 'filename'=>'string'],
|
||||
'enchant_broker_set_dict_path' => ['bool', 'broker'=>'resource', 'type'=>'int', 'path'=>'string'],
|
||||
'enchant_broker_set_ordering' => ['bool', 'broker'=>'resource', 'tag'=>'string', 'ordering'=>'string'],
|
||||
'enchant_dict_add_to_personal' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_add_to_session' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_check' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_describe' => ['array', 'dictionary'=>'resource'],
|
||||
'enchant_dict_get_error' => ['string', 'dictionary'=>'resource'],
|
||||
'enchant_dict_is_in_session' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'enchant_dict_quick_check' => ['bool', 'dictionary'=>'resource', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
'enchant_dict_store_replacement' => ['void', 'dictionary'=>'resource', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
'enchant_dict_suggest' => ['array', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'fpassthru' => ['int|false', 'stream'=>'resource'],
|
||||
'gmdate' => ['string|false', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'gmmktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'],
|
||||
'gmp_binomial' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'gmp_export' => ['string|false', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_import' => ['GMP|false', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'gmp_random' => ['GMP', 'limiter='=>'int'],
|
||||
'gmp_random_seed' => ['void|false', 'seed'=>'GMP|string|int'],
|
||||
'gzgetss' => ['string|false', 'zp'=>'resource', 'length'=>'int', 'allowable_tags='=>'string'],
|
||||
'gzpassthru' => ['int|false', 'stream'=>'resource'],
|
||||
'hash_hkdf' => ['string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'image2wbmp' => ['bool', 'im'=>'resource', 'filename='=>'?string', 'threshold='=>'int'],
|
||||
'imageaffine' => ['resource|false', 'image'=>'resource', 'affine'=>'array', 'clip='=>'array'],
|
||||
'imagealphablending' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imageantialias' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imagearc' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
'imagebmp' => ['bool', 'image'=>'resource', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'imagechar' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecharup' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'imagecolorallocatealpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorallocate' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorat' => ['int|false', 'image'=>'resource', 'x'=>'int', 'y'=>'int'],
|
||||
'imagecolorclosestalpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorclosesthwb' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorclosest' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolordeallocate' => ['bool', 'image'=>'resource', 'color'=>'int'],
|
||||
'imagecolorexactalpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorexact' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolormatch' => ['bool', 'image1'=>'resource', 'image2'=>'resource'],
|
||||
'imagecolorresolvealpha' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'imagecolorresolve' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'imagecolorset' => ['void', 'image'=>'resource', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
'imagecolorsforindex' => ['array<string,int>|false', 'image'=>'resource', 'color'=>'int'],
|
||||
'imagecolorstotal' => ['int|false', 'image'=>'resource'],
|
||||
'imagecolortransparent' => ['int|false', 'image'=>'resource', 'color='=>'int'],
|
||||
'imageconvolution' => ['bool', 'image'=>'resource', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
'imagecopy' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopymerge' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopymergegray' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'imagecopyresampled' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecopyresized' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgd2part' => ['resource|false', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatefromgd2' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgd' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromgif' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromjpeg' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefrompng' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromstring' => ['resource|false', 'data'=>'string'],
|
||||
'imagecreatefromtga' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromwbmp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromwebp' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromxbm' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreatefromxpm' => ['resource|false', 'filename'=>'string'],
|
||||
'imagecreate' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecreatetruecolor' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'imagecropauto' => ['resource|false', 'image'=>'resource', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
'imagecrop' => ['resource|false', 'image'=>'resource', 'rectangle'=>'array'],
|
||||
'imagedashedline' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagedestroy' => ['bool', 'image'=>'resource'],
|
||||
'imageellipse' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefill' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagefilledarc' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
'imagefilledellipse' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'imagefilledpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagefilledrectangle' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imagefilltoborder' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
'imagefilter' => ['bool', 'image'=>'resource', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
'imageflip' => ['bool', 'image'=>'resource', 'mode'=>'int'],
|
||||
'imagefttext' => ['array<int,int>|false', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagegammacorrect' => ['bool', 'image'=>'resource', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
'imagegd2' => ['bool', 'image'=>'resource', 'file='=>'?string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
'imagegd' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'imagegetclip' => ['array<int,int>|false', 'image'=>'resource'],
|
||||
'imagegif' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'imagegrabscreen' => ['false|resource'],
|
||||
'imagegrabwindow' => ['false|resource', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
'imageinterlace' => ['int|false', 'image'=>'resource', 'enable='=>'?bool'],
|
||||
'imageistruecolor' => ['bool', 'image'=>'resource'],
|
||||
'imagejpeg' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagelayereffect' => ['bool', 'image'=>'resource', 'effect'=>'int'],
|
||||
'imageline' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageopenpolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagepalettecopy' => ['void', 'dst'=>'resource', 'src'=>'resource'],
|
||||
'imagepalettetotruecolor' => ['bool', 'image'=>'resource'],
|
||||
'imagepng' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
'imagepolygon' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'imagerectangle' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'imageresolution' => ['array<int,int>|bool', 'image'=>'resource', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'imagerotate' => ['resource|false', 'image'=>'resource', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
'imagesavealpha' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'imagescale' => ['resource|false', 'image'=>'resource', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
'imagesetbrush' => ['bool', 'image'=>'resource', 'brush'=>'resource'],
|
||||
'imagesetclip' => ['bool', 'image'=>'resource', 'x1'=>'int', 'x2'=>'int', 'y1'=>'int', 'y2'=>'int'],
|
||||
'imagesetinterpolation' => ['bool', 'image'=>'resource', 'method='=>'int'],
|
||||
'imagesetpixel' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'imagesetstyle' => ['bool', 'image'=>'resource', 'style'=>'non-empty-array'],
|
||||
'imagesetthickness' => ['bool', 'image'=>'resource', 'thickness'=>'int'],
|
||||
'imagesettile' => ['bool', 'image'=>'resource', 'tile'=>'resource'],
|
||||
'imagestring' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagestringup' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'imagesx' => ['int|false', 'image'=>'resource'],
|
||||
'imagesy' => ['int|false', 'image'=>'resource'],
|
||||
'imagetruecolortopalette' => ['bool', 'image'=>'resource', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
'imagettftext' => ['false|array<int,int>', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'imagewbmp' => ['bool', 'image'=>'resource', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
'imagewebp' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'imagexbm' => ['bool', 'image'=>'resource', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
'imap_mailboxmsginfo' => ['stdClass|false', 'imap'=>'resource'],
|
||||
'inflate_add' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'inflate_get_read_len' => ['int|false', 'context'=>'resource'],
|
||||
'inflate_get_status' => ['int|false', 'context'=>'resource'],
|
||||
'inflate_init' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'jpeg2wbmp' => ['bool', 'jpegname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'ldap_count_entries' => ['int|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'ldap_get_attributes' => ['array|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'ldap_sort' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', 'sortfilter'=>'string'],
|
||||
'mb_convert_case' => ['string|false', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
'mb_convert_kana' => ['string|false', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
'mb_decode_numericentity' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'is_hex='=>'bool'],
|
||||
'mb_encode_mimeheader' => ['string|false', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
'mb_encode_numericentity' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
'mb_encoding_aliases' => ['list<string>|false', 'encoding'=>'string'],
|
||||
'mb_ereg' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_eregi' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'mb_scrub' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strcut' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
'mb_strimwidth' => ['string|false', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
'mb_strlen' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtolower' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strtoupper' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_strwidth' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'mb_substr' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
'mb_substr_count' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
'mktime' => ['int|false', 'hour'=>'int', 'minute='=>'int', 'second='=>'int', 'month='=>'int', 'day='=>'int', 'year='=>'int'],
|
||||
'msg_get_queue' => ['resource', 'key'=>'int', 'permissions='=>'int'],
|
||||
'msg_receive' => ['bool', 'queue'=>'resource', 'desired_message_type'=>'int', '&w_received_message_type'=>'int', 'max_message_size'=>'int', '&w_message'=>'mixed', 'unserialize='=>'bool', 'flags='=>'int', '&w_error_code='=>'int'],
|
||||
'msg_remove_queue' => ['bool', 'queue'=>'resource'],
|
||||
'msg_send' => ['bool', 'queue'=>'resource', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
'msg_set_queue' => ['bool', 'queue'=>'resource', 'data'=>'array'],
|
||||
'msg_stat_queue' => ['array', 'queue'=>'resource'],
|
||||
'mysqli_fetch_fields' => ['?array<int,object>', 'result'=>'mysqli_result'],
|
||||
'mysqli_get_client_stats' => ['array|false'],
|
||||
'mysqli_get_connection_stats' => ['array|false', 'mysql'=>'mysqli'],
|
||||
'mysqli_stmt_attr_get' => ['int|false', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
'numfmt_create' => ['NumberFormatter|false', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
'ob_implicit_flush' => ['void', 'enable='=>'int'],
|
||||
'oci_collection_append' => ['bool', 'collection'=>'resource', 'value'=>'string'],
|
||||
'oci_collection_assign' => ['bool', 'to'=>'resource', 'from'=>'object'],
|
||||
'oci_collection_element_assign' => ['bool', 'collection'=>'resource', 'index'=>'int', 'value'=>'string'],
|
||||
'oci_collection_element_get' => ['string', 'collection'=>'resource', 'index'=>'int'],
|
||||
'oci_collection_max' => ['int', 'collection'=>'resource'],
|
||||
'oci_collection_size' => ['int', 'collection'=>'resource'],
|
||||
'oci_collection_trim' => ['bool', 'collection'=>'resource', 'num'=>'int'],
|
||||
'oci_fetch_all' => ['int|false', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
'oci_free_collection' => ['bool', 'collection'=>'resource'],
|
||||
'oci_free_descriptor' => ['bool', 'lob'=>'resource'],
|
||||
'oci_new_descriptor' => ['OCILob|false', 'connection'=>'resource', 'type='=>'int'],
|
||||
'openssl_cipher_iv_length' => ['int|false', 'cipher_algo'=>'string'],
|
||||
'openssl_csr_export' => ['bool', 'csr'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_export_to_file' => ['bool', 'csr'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_csr_get_public_key' => ['resource|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_csr_get_subject' => ['array|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_csr_new' => ['resource|false', 'distinguished_names'=>'array', '&w_private_key'=>'resource', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
'openssl_csr_sign' => ['resource|false', 'csr'=>'string|resource', 'ca_certificate'=>'string|resource|null', 'private_key'=>'string|resource|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
'openssl_decrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', 'tag='=>'string', 'aad='=>'string'],
|
||||
'openssl_dh_compute_key' => ['string|false', 'public_key'=>'string', 'private_key'=>'resource'],
|
||||
'openssl_digest' => ['string|false', 'data'=>'string', 'digest_algo'=>'string', 'binary='=>'bool'],
|
||||
'openssl_encrypt' => ['string|false', 'data'=>'string', 'cipher_algo'=>'string', 'passphrase'=>'string', 'options='=>'int', 'iv='=>'string', '&w_tag='=>'string', 'aad='=>'string', 'tag_length='=>'int'],
|
||||
'openssl_error_string' => ['string|false'],
|
||||
'openssl_free_key' => ['void', 'key'=>'resource'],
|
||||
'openssl_get_cert_locations' => ['array'],
|
||||
'openssl_get_cipher_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_curve_names' => ['list<string>'],
|
||||
'openssl_get_md_methods' => ['array', 'aliases='=>'bool'],
|
||||
'openssl_get_privatekey' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_get_publickey' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'openssl_open' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'string|array|resource', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
'openssl_pbkdf2' => ['string|false', 'password'=>'string', 'salt'=>'string', 'key_length'=>'int', 'iterations'=>'int', 'digest_algo='=>'string'],
|
||||
'openssl_pkcs12_export' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_export_to_file' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'openssl_pkcs12_read' => ['bool', 'pkcs12'=>'string', '&w_certificates'=>'array', 'passphrase'=>'string'],
|
||||
'openssl_pkcs7_decrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key='=>'string|resource|array'],
|
||||
'openssl_pkcs7_encrypt' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
'openssl_pkcs7_read' => ['bool', 'input_filename'=>'string', '&w_certificates'=>'array'],
|
||||
'openssl_pkcs7_sign' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
'openssl_pkcs7_verify' => ['bool|int', 'input_filename'=>'string', 'flags'=>'int', 'signers_certificates_filename='=>'string', 'ca_info='=>'array', 'untrusted_certificates_filename='=>'string', 'content='=>'string', 'output_filename='=>'string'],
|
||||
'openssl_pkey_derive' => ['string|false', 'public_key'=>'mixed', 'private_key'=>'mixed', 'key_length='=>'?int'],
|
||||
'openssl_pkey_export' => ['bool', 'key'=>'resource', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_export_to_file' => ['bool', 'key'=>'resource|string|array', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'openssl_pkey_free' => ['void', 'key'=>'resource'],
|
||||
'openssl_pkey_get_details' => ['array|false', 'key'=>'resource'],
|
||||
'openssl_pkey_get_private' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'openssl_pkey_get_public' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'openssl_pkey_new' => ['resource|false', 'options='=>'array'],
|
||||
'openssl_private_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'openssl_private_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'openssl_public_decrypt' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'openssl_public_encrypt' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'openssl_random_pseudo_bytes' => ['string|false', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
'openssl_seal' => ['int|false', 'data'=>'string', '&w_sealed_data'=>'string', '&rw_encrypted_keys'=>'array', 'public_key'=>'array', 'cipher_algo'=>'string', '&iv='=>'string'],
|
||||
'openssl_sign' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'openssl_spki_export' => ['?string', 'spki'=>'string'],
|
||||
'openssl_spki_export_challenge' => ['?string', 'spki'=>'string'],
|
||||
'openssl_spki_new' => ['?string', 'private_key'=>'resource', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
'openssl_spki_verify' => ['bool', 'spki'=>'string'],
|
||||
'openssl_verify' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'openssl_x509_check_private_key' => ['bool', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array'],
|
||||
'openssl_x509_checkpurpose' => ['bool|int', 'certificate'=>'string|resource', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
'openssl_x509_export' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_export_to_file' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'openssl_x509_fingerprint' => ['string|false', 'certificate'=>'string|resource', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
'openssl_x509_free' => ['void', 'certificate'=>'resource'],
|
||||
'openssl_x509_parse' => ['array|false', 'certificate'=>'string|resource', 'short_names='=>'bool'],
|
||||
'openssl_x509_read' => ['resource|false', 'certificate'=>'string|resource'],
|
||||
'openssl_x509_verify' => ['int', 'certificate'=>'string|resource', 'public_key'=>'string|resource'],
|
||||
'parse_str' => ['void', 'string'=>'string', '&w_result'=>'array'],
|
||||
'password_hash' => ['string|false|null', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'pg_fetch_all' => ['array<int,array>|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
'pg_fetch_all_columns' => ['array<int,?string>|false', 'result'=>'resource', 'field='=>'int'],
|
||||
'png2wbmp' => ['bool', 'pngname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'proc_get_status' => ['array<string,int|string|bool>|false', 'process'=>'resource'],
|
||||
'read_exif_data' => ['array', 'filename'=>'string', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||
'sem_acquire' => ['bool', 'semaphore'=>'resource', 'non_blocking='=>'bool'],
|
||||
'sem_get' => ['resource|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
'sem_release' => ['bool', 'semaphore'=>'resource'],
|
||||
'sem_remove' => ['bool', 'semaphore'=>'resource'],
|
||||
'shm_attach' => ['resource', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
'shm_detach' => ['bool', 'shm'=>'resource'],
|
||||
'shm_get_var' => ['mixed', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shm_has_var' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shm_put_var' => ['bool', 'shm'=>'resource', 'key'=>'int', 'value'=>'mixed'],
|
||||
'shm_remove' => ['bool', 'shm'=>'resource'],
|
||||
'shm_remove_var' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'shmop_close' => ['void', 'shmop'=>'resource'],
|
||||
'shmop_delete' => ['bool', 'shmop'=>'resource'],
|
||||
'shmop_open' => ['resource|false', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
'shmop_read' => ['string|false', 'shmop'=>'resource', 'offset'=>'int', 'size'=>'int'],
|
||||
'shmop_size' => ['int', 'shmop'=>'resource'],
|
||||
'shmop_write' => ['int|false', 'shmop'=>'resource', 'data'=>'string', 'offset'=>'int'],
|
||||
'simplexml_import_dom' => ['SimpleXMLElement|false', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
'sleep' => ['int|false', 'seconds'=>'int'],
|
||||
'socket_accept' => ['resource|false', 'socket'=>'resource'],
|
||||
'socket_addrinfo_bind' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_connect' => ['?resource', 'address'=>'resource'],
|
||||
'socket_addrinfo_explain' => ['array', 'address'=>'resource'],
|
||||
'socket_addrinfo_lookup' => ['resource[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'socket_bind' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_clear_error' => ['void', 'socket='=>'resource'],
|
||||
'socket_close' => ['void', 'socket'=>'resource'],
|
||||
'socket_connect' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_create' => ['resource|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
'socket_create_listen' => ['resource|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
'socket_create_pair' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'resource[]'],
|
||||
'socket_export_stream' => ['resource|false', 'socket'=>'resource'],
|
||||
'socket_get_option' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getopt' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'socket_getpeername' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_getsockname' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_import_stream' => ['resource|false|null', 'stream'=>'resource'],
|
||||
'socket_last_error' => ['int', 'socket='=>'resource'],
|
||||
'socket_listen' => ['bool', 'socket'=>'resource', 'backlog='=>'int'],
|
||||
'socket_read' => ['string|false', 'socket'=>'resource', 'length'=>'int', 'mode='=>'int'],
|
||||
'socket_recv' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_recvfrom' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'socket_recvmsg' => ['int|false', 'socket'=>'resource', '&w_message'=>'array', 'flags='=>'int'],
|
||||
'socket_select' => ['int|false', '&rw_read'=>'resource[]|null', '&rw_write'=>'resource[]|null', '&rw_except'=>'resource[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_send' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'socket_sendmsg' => ['int|false', 'socket'=>'resource', 'message'=>'array', 'flags='=>'int'],
|
||||
'socket_sendto' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
'socket_set_block' => ['bool', 'socket'=>'resource'],
|
||||
'socket_set_nonblock' => ['bool', 'socket'=>'resource'],
|
||||
'socket_set_option' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_set_timeout' => ['bool', 'stream'=>'resource', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'socket_setopt' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'socket_shutdown' => ['bool', 'socket'=>'resource', 'mode='=>'int'],
|
||||
'socket_strerror' => ['string', 'error_code'=>'int'],
|
||||
'socket_write' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length='=>'int'],
|
||||
'socket_wsaprotocol_info_export' => ['string|false', 'socket'=>'resource', 'process_id'=>'int'],
|
||||
'socket_wsaprotocol_info_import' => ['resource|false', 'info_id'=>'string'],
|
||||
'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'],
|
||||
'SplFileObject::fgetss' => ['string|false', 'allowable_tags='=>'string'],
|
||||
'substr' => ['string|false', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
'strchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'stream_bucket_new' => ['resource|false', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
'stream_set_chunk_size' => ['int|false', 'stream'=>'resource', 'size'=>'int'],
|
||||
'stripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'stristr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'strpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strrchr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int'],
|
||||
'strripos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strrpos' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'strstr' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'substr_compare' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
'timezone_identifiers_list' => ['list<string>|false', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
'timezone_offset_get' => ['int|false', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
'version_compare' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\''],
|
||||
'xml_parser_create' => ['resource', 'encoding='=>'string'],
|
||||
'xml_parser_create_ns' => ['resource', 'encoding='=>'string', 'separator='=>'string'],
|
||||
'xml_parser_free' => ['bool', 'parser'=>'resource'],
|
||||
'xml_parser_get_option' => ['mixed|false', 'parser'=>'resource', 'option'=>'int'],
|
||||
'xml_parser_set_option' => ['bool', 'parser'=>'resource', 'option'=>'int', 'value'=>'int|string'],
|
||||
'xml_set_character_data_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_default_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_element_handler' => ['bool', 'parser'=>'resource', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
'xml_set_end_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_external_entity_ref_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_notation_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_object' => ['bool', 'parser'=>'resource', 'object'=>'object'],
|
||||
'xml_set_processing_instruction_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_start_namespace_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_set_unparsed_entity_decl_handler' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'xml_parse' => ['int', 'parser'=>'resource', 'data'=>'string', 'is_final='=>'bool'],
|
||||
'xml_parse_into_struct' => ['int', 'parser'=>'resource', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
'xml_get_current_byte_index' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_current_column_number' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_current_line_number' => ['int|false', 'parser'=>'resource'],
|
||||
'xml_get_error_code' => ['int|false', 'parser'=>'resource'],
|
||||
'xmlwriter_end_attribute' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_cdata' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_comment' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_document' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_attlist' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_dtd_entity' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_end_pi' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_flush' => ['int|string', 'writer'=>'resource', 'empty='=>'bool'],
|
||||
'xmlwriter_full_end_element' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_open_memory' => ['resource'],
|
||||
'xmlwriter_open_uri' => ['resource', 'uri'=>'string'],
|
||||
'xmlwriter_output_memory' => ['string', 'writer'=>'resource', 'flush='=>'bool'],
|
||||
'xmlwriter_set_indent' => ['bool', 'writer'=>'resource', 'enable'=>'bool'],
|
||||
'xmlwriter_set_indent_string' => ['bool', 'writer'=>'resource', 'indentation'=>'string'],
|
||||
'xmlwriter_start_attribute' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_attribute_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_cdata' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_start_comment' => ['bool', 'writer'=>'resource'],
|
||||
'xmlwriter_start_document' => ['bool', 'writer'=>'resource', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
'xmlwriter_start_dtd' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
'xmlwriter_start_dtd_attlist' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_dtd_element' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string'],
|
||||
'xmlwriter_start_dtd_entity' => ['bool', 'writer'=>'resource', 'name'=>'string', 'isParam'=>'bool'],
|
||||
'xmlwriter_start_element' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'xmlwriter_start_element_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'xmlwriter_start_pi' => ['bool', 'writer'=>'resource', 'target'=>'string'],
|
||||
'xmlwriter_text' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_attribute' => ['bool', 'writer'=>'resource', 'name'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_attribute_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'xmlwriter_write_cdata' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_comment' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd' => ['bool', 'writer'=>'resource', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_dtd_attlist' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_element' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_dtd_entity' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
'xmlwriter_write_element' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_element_ns' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
'xmlwriter_write_pi' => ['bool', 'writer'=>'resource', 'target'=>'string', 'content'=>'string'],
|
||||
'xmlwriter_write_raw' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
],
|
||||
'added' => [
|
||||
'DateTime::createFromInterface' => ['self', 'object'=>'DateTimeInterface'],
|
||||
'DateTimeImmutable::createFromInterface' => ['self', 'object'=>'DateTimeInterface'],
|
||||
'fdiv' => ['float', 'num1'=>'float', 'num2'=>'float'],
|
||||
'get_debug_type' => ['string', 'value'=>'mixed'],
|
||||
'get_resource_id' => ['int', 'resource'=>'resource'],
|
||||
'imagegetinterpolation' => ['int', 'image'=>'GdImage'],
|
||||
'PhpToken::getTokenName' => ['string'],
|
||||
'PhpToken::is' => ['bool', 'kind'=>'string|int|string[]|int[]'],
|
||||
'PhpToken::isIgnorable' => ['bool'],
|
||||
'PhpToken::tokenize' => ['list<PhpToken>', 'code'=>'string', 'flags='=>'int'],
|
||||
'ReflectionClass::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionClassConstant::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionFunctionAbstract::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionParameter::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionProperty::getAttributes' => ['list<ReflectionAttribute>', 'name='=>'?string', 'flags='=>'int'],
|
||||
'ReflectionUnionType::getTypes' => ['list<ReflectionNamedType>'],
|
||||
'str_contains' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_ends_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
'str_starts_with' => ['bool', 'haystack'=>'string', 'needle'=>'string'],
|
||||
],
|
||||
'changed' => [
|
||||
'apache_request_headers' => [
|
||||
'old' => ['array<string,mixed>|false'],
|
||||
'new' => ['array<string,mixed>'],
|
||||
],
|
||||
'array_combine' => [
|
||||
'old' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
'new' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'],
|
||||
],
|
||||
'array_key_exists' => [
|
||||
'old' => ['bool', 'key'=>'string|int', 'array'=>'array|ArrayObject'],
|
||||
'new' => ['bool', 'key'=>'string|int', 'array'=>'array'],
|
||||
],
|
||||
'bcdiv' => [
|
||||
'old' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'new' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
],
|
||||
'bcmod' => [
|
||||
'old' => ['?string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
'new' => ['string', 'num1'=>'string', 'num2'=>'string', 'scale='=>'int'],
|
||||
],
|
||||
'bcpowmod' => [
|
||||
'old' => ['?string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
'new' => ['string', 'num'=>'string', 'exponent'=>'string', 'modulus'=>'string', 'scale='=>'int'],
|
||||
],
|
||||
'collator_get_strength' => [
|
||||
'old' => ['int|false', 'object'=>'collator'],
|
||||
'new' => ['int', 'object'=>'collator'],
|
||||
],
|
||||
'com_load_typelib' => [
|
||||
'old' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'bool'],
|
||||
'new' => ['bool', 'typelib'=>'string', 'case_insensitive='=>'true'],
|
||||
],
|
||||
'count_chars' => [
|
||||
'old' => ['array<int,int>|false|string', 'string'=>'string', 'mode='=>'int'],
|
||||
'new' => ['array<int,int>|string', 'string'=>'string', 'mode='=>'int'],
|
||||
],
|
||||
'curl_close' => [
|
||||
'old' => ['void', 'handle'=>'resource'],
|
||||
'new' => ['void', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_copy_handle' => [
|
||||
'old' => ['resource', 'handle'=>'resource'],
|
||||
'new' => ['CurlHandle', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_errno' => [
|
||||
'old' => ['int', 'handle'=>'resource'],
|
||||
'new' => ['int', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_error' => [
|
||||
'old' => ['string', 'handle'=>'resource'],
|
||||
'new' => ['string', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_escape' => [
|
||||
'old' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'new' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
],
|
||||
'curl_exec' => [
|
||||
'old' => ['bool|string', 'handle'=>'resource'],
|
||||
'new' => ['bool|string', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_getinfo' => [
|
||||
'old' => ['mixed', 'handle'=>'resource', 'option='=>'int'],
|
||||
'new' => ['mixed', 'handle'=>'CurlHandle', 'option='=>'int'],
|
||||
],
|
||||
'curl_init' => [
|
||||
'old' => ['resource|false', 'url='=>'string'],
|
||||
'new' => ['CurlHandle|false', 'url='=>'string'],
|
||||
],
|
||||
'curl_multi_add_handle' => [
|
||||
'old' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'new' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_multi_close' => [
|
||||
'old' => ['void', 'multi_handle'=>'resource'],
|
||||
'new' => ['void', 'multi_handle'=>'CurlMultiHandle'],
|
||||
],
|
||||
'curl_multi_errno' => [
|
||||
'old' => ['int', 'multi_handle'=>'resource'],
|
||||
'new' => ['int', 'multi_handle'=>'CurlMultiHandle'],
|
||||
],
|
||||
'curl_multi_exec' => [
|
||||
'old' => ['int', 'multi_handle'=>'resource', '&w_still_running'=>'int'],
|
||||
'new' => ['int', 'multi_handle'=>'CurlMultiHandle', '&w_still_running'=>'int'],
|
||||
],
|
||||
'curl_multi_getcontent' => [
|
||||
'old' => ['string', 'handle'=>'resource'],
|
||||
'new' => ['string', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_multi_info_read' => [
|
||||
'old' => ['array|false', 'multi_handle'=>'resource', '&w_queued_messages='=>'int'],
|
||||
'new' => ['array|false', 'multi_handle'=>'CurlMultiHandle', '&w_queued_messages='=>'int'],
|
||||
],
|
||||
'curl_multi_init' => [
|
||||
'old' => ['resource'],
|
||||
'new' => ['CurlMultiHandle'],
|
||||
],
|
||||
'curl_multi_remove_handle' => [
|
||||
'old' => ['int', 'multi_handle'=>'resource', 'handle'=>'resource'],
|
||||
'new' => ['int', 'multi_handle'=>'CurlMultiHandle', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_multi_select' => [
|
||||
'old' => ['int', 'multi_handle'=>'resource', 'timeout='=>'float'],
|
||||
'new' => ['int', 'multi_handle'=>'CurlMultiHandle', 'timeout='=>'float'],
|
||||
],
|
||||
'curl_multi_setopt' => [
|
||||
'old' => ['bool', 'multi_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'new' => ['bool', 'multi_handle'=>'CurlMultiHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
],
|
||||
'curl_pause' => [
|
||||
'old' => ['int', 'handle'=>'resource', 'flags'=>'int'],
|
||||
'new' => ['int', 'handle'=>'CurlHandle', 'flags'=>'int'],
|
||||
],
|
||||
'curl_reset' => [
|
||||
'old' => ['void', 'handle'=>'resource'],
|
||||
'new' => ['void', 'handle'=>'CurlHandle'],
|
||||
],
|
||||
'curl_setopt' => [
|
||||
'old' => ['bool', 'handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'new' => ['bool', 'handle'=>'CurlHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
],
|
||||
'curl_setopt_array' => [
|
||||
'old' => ['bool', 'handle'=>'resource', 'options'=>'array'],
|
||||
'new' => ['bool', 'handle'=>'CurlHandle', 'options'=>'array'],
|
||||
],
|
||||
'curl_share_close' => [
|
||||
'old' => ['void', 'share_handle'=>'resource'],
|
||||
'new' => ['void', 'share_handle'=>'CurlShareHandle'],
|
||||
],
|
||||
'curl_share_errno' => [
|
||||
'old' => ['int', 'share_handle'=>'resource'],
|
||||
'new' => ['int', 'share_handle'=>'CurlShareHandle'],
|
||||
],
|
||||
'curl_share_init' => [
|
||||
'old' => ['resource'],
|
||||
'new' => ['CurlShareHandle'],
|
||||
],
|
||||
'curl_share_setopt' => [
|
||||
'old' => ['bool', 'share_handle'=>'resource', 'option'=>'int', 'value'=>'mixed'],
|
||||
'new' => ['bool', 'share_handle'=>'CurlShareHandle', 'option'=>'int', 'value'=>'mixed'],
|
||||
],
|
||||
'curl_unescape' => [
|
||||
'old' => ['string|false', 'handle'=>'resource', 'string'=>'string'],
|
||||
'new' => ['string|false', 'handle'=>'CurlHandle', 'string'=>'string'],
|
||||
],
|
||||
'date_add' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
],
|
||||
'date_date_set' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'month'=>'int', 'day'=>'int'],
|
||||
],
|
||||
'date_diff' => [
|
||||
'old' => ['DateInterval|false', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
'new' => ['DateInterval', 'baseObject'=>'DateTimeInterface', 'targetObject'=>'DateTimeInterface', 'absolute='=>'bool'],
|
||||
],
|
||||
'date_format' => [
|
||||
'old' => ['string|false', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
'new' => ['string', 'object'=>'DateTimeInterface', 'format'=>'string'],
|
||||
],
|
||||
'date_isodate_set' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'year'=>'int', 'week'=>'int', 'dayOfWeek='=>'int'],
|
||||
],
|
||||
'date_parse' => [
|
||||
'old' => ['array<string,mixed>|false', 'datetime'=>'string'],
|
||||
'new' => ['array<string,mixed>', 'datetime'=>'string'],
|
||||
],
|
||||
'date_sub' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'interval'=>'DateInterval'],
|
||||
],
|
||||
'date_sun_info' => [
|
||||
'old' => ['array<string,bool|int>|false', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
'new' => ['array<string,bool|int>', 'timestamp'=>'int', 'latitude'=>'float', 'longitude'=>'float'],
|
||||
],
|
||||
'date_time_set' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'hour'=>'int', 'minute'=>'int', 'second='=>'int', 'microsecond='=>'int'],
|
||||
],
|
||||
'date_timestamp_set' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'timestamp'=>'int'],
|
||||
],
|
||||
'date_timezone_set' => [
|
||||
'old' => ['DateTime|false', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
'new' => ['DateTime', 'object'=>'DateTime', 'timezone'=>'DateTimeZone'],
|
||||
],
|
||||
'debug_backtrace' => [
|
||||
'old' => ['list<array>', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'new' => ['list<array>', 'options='=>'int', 'limit='=>'int'],
|
||||
],
|
||||
'debug_print_backtrace' => [
|
||||
'old' => ['void', 'options='=>'int|bool', 'limit='=>'int'],
|
||||
'new' => ['void', 'options='=>'int', 'limit='=>'int'],
|
||||
],
|
||||
'deflate_add' => [
|
||||
'old' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'new' => ['string|false', 'context'=>'DeflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
],
|
||||
'deflate_init' => [
|
||||
'old' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'new' => ['DeflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
],
|
||||
'dom_import_simplexml' => [
|
||||
'old' => ['DOMElement|false|null', 'node'=>'SimpleXMLElement'],
|
||||
'new' => ['DOMElement|null', 'node'=>'SimpleXMLElement'],
|
||||
],
|
||||
'easter_date' => [
|
||||
'old' => ['int', 'year='=>'int', 'mode='=>'int'],
|
||||
'new' => ['int', 'year='=>'?int', 'mode='=>'int'],
|
||||
],
|
||||
'enchant_broker_describe' => [
|
||||
'old' => ['array', 'broker'=>'resource'],
|
||||
'new' => ['array', 'broker'=>'EnchantBroker'],
|
||||
],
|
||||
'enchant_broker_dict_exists' => [
|
||||
'old' => ['bool', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'new' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
],
|
||||
'enchant_broker_free' => [
|
||||
'old' => ['bool', 'broker'=>'resource'],
|
||||
'new' => ['bool', 'broker'=>'EnchantBroker'],
|
||||
],
|
||||
'enchant_broker_free_dict' => [
|
||||
'old' => ['bool', 'dictionary'=>'resource'],
|
||||
'new' => ['bool', 'dictionary'=>'EnchantDictionary'],
|
||||
],
|
||||
'enchant_broker_get_dict_path' => [
|
||||
'old' => ['string', 'broker'=>'resource', 'type'=>'int'],
|
||||
'new' => ['string', 'broker'=>'EnchantBroker', 'type'=>'int'],
|
||||
],
|
||||
'enchant_broker_get_error' => [
|
||||
'old' => ['string|false', 'broker'=>'resource'],
|
||||
'new' => ['string|false', 'broker'=>'EnchantBroker'],
|
||||
],
|
||||
'enchant_broker_init' => [
|
||||
'old' => ['resource|false'],
|
||||
'new' => ['EnchantBroker|false'],
|
||||
],
|
||||
'enchant_broker_list_dicts' => [
|
||||
'old' => ['array', 'broker'=>'resource'],
|
||||
'new' => ['array', 'broker'=>'EnchantBroker'],
|
||||
],
|
||||
'enchant_broker_request_dict' => [
|
||||
'old' => ['resource|false', 'broker'=>'resource', 'tag'=>'string'],
|
||||
'new' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'tag'=>'string'],
|
||||
],
|
||||
'enchant_broker_request_pwl_dict' => [
|
||||
'old' => ['resource|false', 'broker'=>'resource', 'filename'=>'string'],
|
||||
'new' => ['EnchantDictionary|false', 'broker'=>'EnchantBroker', 'filename'=>'string'],
|
||||
],
|
||||
'enchant_broker_set_dict_path' => [
|
||||
'old' => ['bool', 'broker'=>'resource', 'type'=>'int', 'path'=>'string'],
|
||||
'new' => ['bool', 'broker'=>'EnchantBroker', 'type'=>'int', 'path'=>'string'],
|
||||
],
|
||||
'enchant_broker_set_ordering' => [
|
||||
'old' => ['bool', 'broker'=>'resource', 'tag'=>'string', 'ordering'=>'string'],
|
||||
'new' => ['bool', 'broker'=>'EnchantBroker', 'tag'=>'string', 'ordering'=>'string'],
|
||||
],
|
||||
'enchant_dict_add_to_personal' => [
|
||||
'old' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'new' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
],
|
||||
'enchant_dict_add_to_session' => [
|
||||
'old' => ['void', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'new' => ['void', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
],
|
||||
'enchant_dict_check' => [
|
||||
'old' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'new' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
],
|
||||
'enchant_dict_describe' => [
|
||||
'old' => ['array', 'dictionary'=>'resource'],
|
||||
'new' => ['array', 'dictionary'=>'EnchantDictionary'],
|
||||
],
|
||||
'enchant_dict_get_error' => [
|
||||
'old' => ['string', 'dictionary'=>'resource'],
|
||||
'new' => ['string', 'dictionary'=>'EnchantDictionary'],
|
||||
],
|
||||
'enchant_dict_is_in_session' => [
|
||||
'old' => ['bool', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'new' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
],
|
||||
'enchant_dict_quick_check' => [
|
||||
'old' => ['bool', 'dictionary'=>'resource', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
'new' => ['bool', 'dictionary'=>'EnchantDictionary', 'word'=>'string', '&w_suggestions='=>'array<int,string>'],
|
||||
],
|
||||
'enchant_dict_store_replacement' => [
|
||||
'old' => ['void', 'dictionary'=>'resource', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
'new' => ['void', 'dictionary'=>'EnchantDictionary', 'misspelled'=>'string', 'correct'=>'string'],
|
||||
],
|
||||
'enchant_dict_suggest' => [
|
||||
'old' => ['array', 'dictionary'=>'resource', 'word'=>'string'],
|
||||
'new' => ['array', 'dictionary'=>'EnchantDictionary', 'word'=>'string'],
|
||||
],
|
||||
'fpassthru' => [
|
||||
'old' => ['int|false', 'stream'=>'resource'],
|
||||
'new' => ['int', 'stream'=>'resource'],
|
||||
],
|
||||
'gmdate' => [
|
||||
'old' => ['string|false', 'format'=>'string', 'timestamp='=>'int'],
|
||||
'new' => ['string', 'format'=>'string', 'timestamp='=>'int'],
|
||||
],
|
||||
'gmp_binomial' => [
|
||||
'old' => ['GMP|false', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
'new' => ['GMP', 'n'=>'GMP|string|int', 'k'=>'int'],
|
||||
],
|
||||
'gmp_export' => [
|
||||
'old' => ['string|false', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'new' => ['string', 'num'=>'GMP|string|int', 'word_size='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'gmp_import' => [
|
||||
'old' => ['GMP|false', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
'new' => ['GMP', 'data'=>'string', 'word_size='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'gmp_random_seed' => [
|
||||
'old' => ['void|false', 'seed'=>'GMP|string|int'],
|
||||
'new' => ['void', 'seed'=>'GMP|string|int'],
|
||||
],
|
||||
'gzpassthru' => [
|
||||
'old' => ['int|false', 'stream'=>'resource'],
|
||||
'new' => ['int', 'stream'=>'resource'],
|
||||
],
|
||||
'hash_hkdf' => [
|
||||
'old' => ['string|false', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
'new' => ['string', 'algo'=>'string', 'key'=>'string', 'length='=>'int', 'info='=>'string', 'salt='=>'string'],
|
||||
],
|
||||
'imageaffine' => [
|
||||
'old' => ['resource|false', 'image'=>'resource', 'affine'=>'array', 'clip='=>'array'],
|
||||
'new' => ['false|GdImage', 'image'=>'GdImage', 'affine'=>'array', 'clip='=>'array'],
|
||||
],
|
||||
'imagealphablending' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
],
|
||||
'imageantialias' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
],
|
||||
'imagearc' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagebmp' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'null|resource|string', 'compressed='=>'bool'],
|
||||
],
|
||||
'imagechar' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
],
|
||||
'imagecharup' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'char'=>'string', 'color'=>'int'],
|
||||
],
|
||||
'imagecolorallocate' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
],
|
||||
'imagecolorallocatealpha' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
],
|
||||
'imagecolorat' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'x'=>'int', 'y'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int'],
|
||||
],
|
||||
'imagecolorclosest' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
],
|
||||
'imagecolorclosestalpha' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
],
|
||||
'imagecolorclosesthwb' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
],
|
||||
'imagecolordeallocate' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'color'=>'int'],
|
||||
],
|
||||
'imagecolorexact' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
],
|
||||
'imagecolorexactalpha' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
],
|
||||
'imagecolormatch' => [
|
||||
'old' => ['bool', 'image1'=>'resource', 'image2'=>'resource'],
|
||||
'new' => ['bool', 'image1'=>'GdImage', 'image2'=>'GdImage'],
|
||||
],
|
||||
'imagecolorresolve' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
|
||||
],
|
||||
'imagecolorresolvealpha' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
'new' => ['int|false', 'image'=>'GdImage', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
|
||||
],
|
||||
'imagecolorset' => [
|
||||
'old' => ['void', 'image'=>'resource', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
'new' => ['void', 'image'=>'GdImage', 'color'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
|
||||
],
|
||||
'imagecolorsforindex' => [
|
||||
'old' => ['array<string,int>|false', 'image'=>'resource', 'color'=>'int'],
|
||||
'new' => ['array<string,int>|false', 'image'=>'GdImage', 'color'=>'int'],
|
||||
],
|
||||
'imagecolorstotal' => [
|
||||
'old' => ['int|false', 'image'=>'resource'],
|
||||
'new' => ['int', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagecolortransparent' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'color='=>'int'],
|
||||
'new' => ['int|null', 'image'=>'GdImage', 'color='=>'int'],
|
||||
],
|
||||
'imageconvolution' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'matrix'=>'array', 'divisor'=>'float', 'offset'=>'float'],
|
||||
],
|
||||
'imagecopy' => [
|
||||
'old' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'new' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
],
|
||||
'imagecopymerge' => [
|
||||
'old' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'new' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
],
|
||||
'imagecopymergegray' => [
|
||||
'old' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
'new' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_width'=>'int', 'src_height'=>'int', 'pct'=>'int'],
|
||||
],
|
||||
'imagecopyresampled' => [
|
||||
'old' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'new' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
],
|
||||
'imagecopyresized' => [
|
||||
'old' => ['bool', 'dst_image'=>'resource', 'src_image'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
'new' => ['bool', 'dst_image'=>'GdImage', 'src_image'=>'GdImage', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_width'=>'int', 'dst_height'=>'int', 'src_width'=>'int', 'src_height'=>'int'],
|
||||
],
|
||||
'imagecreate' => [
|
||||
'old' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'new' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
],
|
||||
'imagecreatefrombmp' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromgd' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromgd2' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromgd2part' => [
|
||||
'old' => ['resource|false', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string', 'x'=>'int', 'y'=>'int', 'width'=>'int', 'height'=>'int'],
|
||||
],
|
||||
'imagecreatefromgif' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromjpeg' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefrompng' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromstring' => [
|
||||
'old' => ['resource|false', 'data'=>'string'],
|
||||
'new' => ['false|GdImage', 'data'=>'string'],
|
||||
],
|
||||
'imagecreatefromtga' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromwbmp' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromwebp' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromxbm' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatefromxpm' => [
|
||||
'old' => ['resource|false', 'filename'=>'string'],
|
||||
'new' => ['false|GdImage', 'filename'=>'string'],
|
||||
],
|
||||
'imagecreatetruecolor' => [
|
||||
'old' => ['resource|false', 'width'=>'int', 'height'=>'int'],
|
||||
'new' => ['false|GdImage', 'width'=>'int', 'height'=>'int'],
|
||||
],
|
||||
'imagecrop' => [
|
||||
'old' => ['resource|false', 'image'=>'resource', 'rectangle'=>'array'],
|
||||
'new' => ['false|GdImage', 'image'=>'GdImage', 'rectangle'=>'array'],
|
||||
],
|
||||
'imagecropauto' => [
|
||||
'old' => ['resource|false', 'image'=>'resource', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
'new' => ['false|GdImage', 'image'=>'GdImage', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
|
||||
],
|
||||
'imagedashedline' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagedestroy' => [
|
||||
'old' => ['bool', 'image'=>'resource'],
|
||||
'new' => ['bool', 'image'=>'GdImage'],
|
||||
],
|
||||
'imageellipse' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagefill' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagefilledarc' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'start_angle'=>'int', 'end_angle'=>'int', 'color'=>'int', 'style'=>'int'],
|
||||
],
|
||||
'imagefilledellipse' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'center_x'=>'int', 'center_y'=>'int', 'width'=>'int', 'height'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagefilledpolygon' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
],
|
||||
'imagefilledrectangle' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagefilltoborder' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'border_color'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagefilter' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'filter'=>'int', '...args='=>'int', 'arg2='=>'int', 'arg3='=>'int', 'arg4='=>'int'],
|
||||
],
|
||||
'imageflip' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'mode'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'mode'=>'int'],
|
||||
],
|
||||
'imagefttext' => [
|
||||
'old' => ['array<int,int>|false', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'new' => ['array<int,int>|false', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
],
|
||||
'imagegammacorrect' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'input_gamma'=>'float', 'output_gamma'=>'float'],
|
||||
],
|
||||
'imagegd' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'string'],
|
||||
],
|
||||
'imagegd2' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'string', 'chunk_size='=>'int', 'mode='=>'int'],
|
||||
],
|
||||
'imagegetclip' => [
|
||||
'old' => ['array<int,int>|false', 'image'=>'resource'],
|
||||
'new' => ['array<int,int>', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagegif' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'?string'],
|
||||
],
|
||||
'imagegrabscreen' => [
|
||||
'old' => ['false|resource'],
|
||||
'new' => ['false|GdImage'],
|
||||
],
|
||||
'imagegrabwindow' => [
|
||||
'old' => ['false|resource', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
'new' => ['false|GdImage', 'handle'=>'int', 'client_area='=>'bool'],
|
||||
],
|
||||
'imageinterlace' => [
|
||||
'old' => ['int|false', 'image'=>'resource', 'enable='=>'?bool'],
|
||||
'new' => ['int', 'image'=>'GdImage', 'enable='=>'?bool'],
|
||||
],
|
||||
'imageistruecolor' => [
|
||||
'old' => ['bool', 'image'=>'resource'],
|
||||
'new' => ['bool', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagejpeg' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
],
|
||||
'imagelayereffect' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'effect'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'effect'=>'int'],
|
||||
],
|
||||
'imageline' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imageopenpolygon' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
],
|
||||
'imagepalettecopy' => [
|
||||
'old' => ['void', 'dst'=>'resource', 'src'=>'resource'],
|
||||
'new' => ['void', 'dst'=>'GdImage', 'src'=>'GdImage'],
|
||||
],
|
||||
'imagepalettetotruecolor' => [
|
||||
'old' => ['bool', 'image'=>'resource'],
|
||||
'new' => ['bool', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagepng' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int', 'filters='=>'int'],
|
||||
],
|
||||
'imagepolygon' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'points'=>'array', 'num_points_or_color'=>'int', 'color='=>'int'],
|
||||
],
|
||||
'imagerectangle' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imageresolution' => [
|
||||
'old' => ['array<int,int>|bool', 'image'=>'resource', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
'new' => ['array<int,int>|bool', 'image'=>'GdImage', 'resolution_x='=>'int', 'resolution_y='=>'int'],
|
||||
],
|
||||
'imagerotate' => [
|
||||
'old' => ['resource|false', 'image'=>'resource', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
'new' => ['false|GdImage', 'image'=>'GdImage', 'angle'=>'float', 'background_color'=>'int', 'ignore_transparent='=>'bool'],
|
||||
],
|
||||
'imagesavealpha' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'enable'=>'bool'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'enable'=>'bool'],
|
||||
],
|
||||
'imagescale' => [
|
||||
'old' => ['resource|false', 'image'=>'resource', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
'new' => ['false|GdImage', 'image'=>'GdImage', 'width'=>'int', 'height='=>'int', 'mode='=>'int'],
|
||||
],
|
||||
'imagesetbrush' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'brush'=>'resource'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'brush'=>'GdImage'],
|
||||
],
|
||||
'imagesetclip' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int'],
|
||||
],
|
||||
'imagesetinterpolation' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'method='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'method='=>'int'],
|
||||
],
|
||||
'imagesetpixel' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'x'=>'int', 'y'=>'int', 'color'=>'int'],
|
||||
],
|
||||
'imagesetstyle' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'style'=>'non-empty-array'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'style'=>'non-empty-array'],
|
||||
],
|
||||
'imagesetthickness' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'thickness'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'thickness'=>'int'],
|
||||
],
|
||||
'imagesettile' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'tile'=>'resource'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'tile'=>'GdImage'],
|
||||
],
|
||||
'imagestring' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
],
|
||||
'imagestringup' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'string'=>'string', 'color'=>'int'],
|
||||
],
|
||||
'imagesx' => [
|
||||
'old' => ['int|false', 'image'=>'resource'],
|
||||
'new' => ['int', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagesy' => [
|
||||
'old' => ['int|false', 'image'=>'resource'],
|
||||
'new' => ['int', 'image'=>'GdImage'],
|
||||
],
|
||||
'imagetruecolortopalette' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'dither'=>'bool', 'num_colors'=>'int'],
|
||||
],
|
||||
'imagettftext' => [
|
||||
'old' => ['false|array<int,int>', 'image'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
'new' => ['false|array<int,int>', 'image'=>'GdImage', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'color'=>'int', 'font_filename'=>'string', 'text'=>'string', 'options='=>'array'],
|
||||
],
|
||||
'imagewbmp' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'foreground_color='=>'int'],
|
||||
],
|
||||
'imagewebp' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'file='=>'?string', 'quality='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'file='=>'?string', 'quality='=>'int'],
|
||||
],
|
||||
'imagexbm' => [
|
||||
'old' => ['bool', 'image'=>'resource', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
'new' => ['bool', 'image'=>'GdImage', 'filename'=>'?string', 'foreground_color='=>'int'],
|
||||
],
|
||||
'imap_mailboxmsginfo' => [
|
||||
'old' => ['stdClass|false', 'imap'=>'resource'],
|
||||
'new' => ['stdClass', 'imap'=>'resource'],
|
||||
],
|
||||
'inflate_add' => [
|
||||
'old' => ['string|false', 'context'=>'resource', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
'new' => ['string|false', 'context'=>'InflateContext', 'data'=>'string', 'flush_mode='=>'int'],
|
||||
],
|
||||
'inflate_get_read_len' => [
|
||||
'old' => ['int|false', 'context'=>'resource'],
|
||||
'new' => ['int', 'context'=>'InflateContext'],
|
||||
],
|
||||
'inflate_get_status' => [
|
||||
'old' => ['int|false', 'context'=>'resource'],
|
||||
'new' => ['int', 'context'=>'InflateContext'],
|
||||
],
|
||||
'inflate_init' => [
|
||||
'old' => ['resource|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
'new' => ['InflateContext|false', 'encoding'=>'int', 'options='=>'array'],
|
||||
],
|
||||
'ldap_count_entries' => [
|
||||
'old' => ['int|false', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
'new' => ['int', 'ldap'=>'resource', 'result'=>'resource'],
|
||||
],
|
||||
'ldap_get_attributes' => [
|
||||
'old' => ['array|false', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
'new' => ['array', 'ldap'=>'resource', 'entry'=>'resource'],
|
||||
],
|
||||
'mb_convert_case' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'mode'=>'int', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_convert_kana' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'mode='=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_decode_numericentity' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'is_hex='=>'bool'],
|
||||
'new' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_encode_mimeheader' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
'new' => ['string', 'string'=>'string', 'charset='=>'string', 'transfer_encoding='=>'string', 'newline='=>'string', 'indent='=>'int'],
|
||||
],
|
||||
'mb_encode_numericentity' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
'new' => ['string', 'string'=>'string', 'map'=>'array', 'encoding='=>'string', 'hex='=>'bool'],
|
||||
],
|
||||
'mb_encoding_aliases' => [
|
||||
'old' => ['list<string>|false', 'encoding'=>'string'],
|
||||
'new' => ['list<string>', 'encoding'=>'string'],
|
||||
],
|
||||
'mb_ereg' => [
|
||||
'old' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'new' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
],
|
||||
'mb_eregi' => [
|
||||
'old' => ['int|false', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
'new' => ['bool', 'pattern'=>'string', 'string'=>'string', '&w_matches='=>'array'],
|
||||
],
|
||||
'mb_scrub' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strcut' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'int', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strimwidth' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'start'=>'int', 'width'=>'int', 'trim_marker='=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strlen' => [
|
||||
'old' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strtolower' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strtoupper' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_strwidth' => [
|
||||
'old' => ['int|false', 'string'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['int', 'string'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_substr' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
'new' => ['string', 'string'=>'string', 'start'=>'int', 'length='=>'?int', 'encoding='=>'string'],
|
||||
],
|
||||
'mb_substr_count' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
'new' => ['int', 'haystack'=>'string', 'needle'=>'string', 'encoding='=>'string'],
|
||||
],
|
||||
'msg_get_queue' => [
|
||||
'old' => ['resource', 'key'=>'int', 'permissions='=>'int'],
|
||||
'new' => ['SysvMessageQueue', 'key'=>'int', 'permissions='=>'int'],
|
||||
],
|
||||
'msg_remove_queue' => [
|
||||
'old' => ['bool', 'queue'=>'resource'],
|
||||
'new' => ['bool', 'queue'=>'SysvMessageQueue'],
|
||||
],
|
||||
'msg_send' => [
|
||||
'old' => ['bool', 'queue'=>'resource', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
'new' => ['bool', 'queue'=>'SysvMessageQueue', 'message_type'=>'int', 'message'=>'array|object|bool|float|int|string|null', 'serialize='=>'bool', 'blocking='=>'bool', '&w_error_code='=>'int'],
|
||||
],
|
||||
'msg_set_queue' => [
|
||||
'old' => ['bool', 'queue'=>'resource', 'data'=>'array'],
|
||||
'new' => ['bool', 'queue'=>'SysvMessageQueue', 'data'=>'array'],
|
||||
],
|
||||
'msg_stat_queue' => [
|
||||
'old' => ['array', 'queue'=>'resource'],
|
||||
'new' => ['array', 'queue'=>'SysvMessageQueue'],
|
||||
],
|
||||
'mysqli_fetch_fields' => [
|
||||
'old' => ['?array<int,object>', 'result'=>'mysqli_result'],
|
||||
'new' => ['array<int,object>', 'result'=>'mysqli_result'],
|
||||
],
|
||||
'mysqli_get_client_stats' => [
|
||||
'old' => ['array|false'],
|
||||
'new' => ['array'],
|
||||
],
|
||||
'mysqli_get_connection_stats' => [
|
||||
'old' => ['array|false', 'mysql'=>'mysqli'],
|
||||
'new' => ['array', 'mysql'=>'mysqli'],
|
||||
],
|
||||
'mysqli_stmt_attr_get' => [
|
||||
'old' => ['int|false', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
'new' => ['int', 'statement'=>'mysqli_stmt', 'attribute'=>'int'],
|
||||
],
|
||||
'numfmt_create' => [
|
||||
'old' => ['NumberFormatter|false', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
'new' => ['NumberFormatter|null', 'locale'=>'string', 'style'=>'int', 'pattern='=>'string'],
|
||||
],
|
||||
'ob_implicit_flush' => [
|
||||
'old' => ['void', 'enable='=>'int'],
|
||||
'new' => ['void', 'enable='=>'bool'],
|
||||
],
|
||||
'oci_collection_append' => [
|
||||
'old' => ['bool', 'collection'=>'resource', 'value'=>'string'],
|
||||
'new' => ['bool', 'collection'=>'OCICollection', 'value'=>'string'],
|
||||
],
|
||||
'oci_collection_assign' => [
|
||||
'old' => ['bool', 'to'=>'resource', 'from'=>'object'],
|
||||
'new' => ['bool', 'to'=>'OCICollection', 'from'=>'OCICollection'],
|
||||
],
|
||||
'oci_collection_element_assign' => [
|
||||
'old' => ['bool', 'collection'=>'resource', 'index'=>'int', 'value'=>'string'],
|
||||
'new' => ['bool', 'collection'=>'OCICollection', 'index'=>'int', 'value'=>'string'],
|
||||
],
|
||||
'oci_collection_element_get' => [
|
||||
'old' => ['string', 'collection'=>'resource', 'index'=>'int'],
|
||||
'new' => ['string', 'collection'=>'OCICollection', 'index'=>'int'],
|
||||
],
|
||||
'oci_collection_max' => [
|
||||
'old' => ['int', 'collection'=>'resource'],
|
||||
'new' => ['int', 'collection'=>'OCICollection'],
|
||||
],
|
||||
'oci_collection_size' => [
|
||||
'old' => ['int', 'collection'=>'resource'],
|
||||
'new' => ['int', 'collection'=>'OCICollection'],
|
||||
],
|
||||
'oci_collection_trim' => [
|
||||
'old' => ['bool', 'collection'=>'resource', 'num'=>'int'],
|
||||
'new' => ['bool', 'collection'=>'OCICollection', 'num'=>'int'],
|
||||
],
|
||||
'oci_fetch_all' => [
|
||||
'old' => ['int|false', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
'new' => ['int', 'statement'=>'resource', '&w_output'=>'array', 'offset='=>'int', 'limit='=>'int', 'flags='=>'int'],
|
||||
],
|
||||
'oci_free_collection' => [
|
||||
'old' => ['bool', 'collection'=>'resource'],
|
||||
'new' => ['bool', 'collection'=>'OCICollection'],
|
||||
],
|
||||
'oci_free_descriptor' => [
|
||||
'old' => ['bool', 'lob'=>'resource'],
|
||||
'new' => ['bool', 'lob'=>'OCILob'],
|
||||
],
|
||||
'oci_new_descriptor' => [
|
||||
'old' => ['OCILob|false', 'connection'=>'resource', 'type='=>'int'],
|
||||
'new' => ['?OCILob', 'connection'=>'resource', 'type='=>'int'],
|
||||
],
|
||||
'openssl_csr_export' => [
|
||||
'old' => ['bool', 'csr'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', '&w_output'=>'OpenSSLAsymmetricKey', 'no_text='=>'bool'],
|
||||
],
|
||||
'openssl_csr_export_to_file' => [
|
||||
'old' => ['bool', 'csr'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
],
|
||||
'openssl_csr_get_public_key' => [
|
||||
'old' => ['resource|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
],
|
||||
'openssl_csr_get_subject' => [
|
||||
'old' => ['array|false', 'csr'=>'string|resource', 'short_names='=>'bool'],
|
||||
'new' => ['array|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'short_names='=>'bool'],
|
||||
],
|
||||
'openssl_csr_new' => [
|
||||
'old' => ['resource|false', 'distinguished_names'=>'array', '&w_private_key'=>'resource', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
'new' => ['OpenSSLCertificateSigningRequest|false', 'distinguished_names'=>'array', '&w_private_key'=>'OpenSSLAsymmetricKey', 'options='=>'array', 'extra_attributes='=>'array'],
|
||||
],
|
||||
'openssl_csr_sign' => [
|
||||
'old' => ['resource|false', 'csr'=>'string|resource', 'ca_certificate'=>'string|resource|null', 'private_key'=>'string|resource|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
'new' => ['OpenSSLCertificate|false', 'csr'=>'string|OpenSSLCertificateSigningRequest', 'ca_certificate'=>'string|OpenSSLCertificate|null', 'private_key'=>'string|OpenSSLAsymmetricKey|OpenSSLCertificate|array', 'days'=>'int', 'options='=>'array', 'serial='=>'int'],
|
||||
],
|
||||
'openssl_dh_compute_key' => [
|
||||
'old' => ['string|false', 'public_key'=>'string', 'private_key'=>'resource'],
|
||||
'new' => ['string|false', 'public_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey'],
|
||||
],
|
||||
'openssl_free_key' => [
|
||||
'old' => ['void', 'key'=>'resource'],
|
||||
'new' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
],
|
||||
'openssl_get_privatekey' => [
|
||||
'old' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
],
|
||||
'openssl_get_publickey' => [
|
||||
'old' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
],
|
||||
'openssl_open' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'string|array|resource', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_output'=>'string', 'encrypted_key'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'cipher_algo'=>'string', 'iv='=>'string'],
|
||||
],
|
||||
'openssl_pkcs12_export' => [
|
||||
'old' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'new' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
],
|
||||
'openssl_pkcs12_export_to_file' => [
|
||||
'old' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'private_key'=>'string|array|resource', 'passphrase'=>'string', 'options='=>'array'],
|
||||
'new' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'passphrase'=>'string', 'options='=>'array'],
|
||||
],
|
||||
'openssl_pkcs7_decrypt' => [
|
||||
'old' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key='=>'string|resource|array'],
|
||||
'new' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key='=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|null|string'],
|
||||
],
|
||||
'openssl_pkcs7_encrypt' => [
|
||||
'old' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
'new' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'cipher_algo='=>'int'],
|
||||
],
|
||||
'openssl_pkcs7_sign' => [
|
||||
'old' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
'new' => ['bool', 'input_filename'=>'string', 'output_filename'=>'string', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'headers'=>'array', 'flags='=>'int', 'untrusted_certificates_filename='=>'string'],
|
||||
],
|
||||
'openssl_pkey_derive' => [
|
||||
'old' => ['string|false', 'public_key'=>'mixed', 'private_key'=>'mixed', 'key_length='=>'?int'],
|
||||
'new' => ['string|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'key_length='=>'int'],
|
||||
],
|
||||
'openssl_pkey_export' => [
|
||||
'old' => ['bool', 'key'=>'resource', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'new' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', '&w_output'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
],
|
||||
'openssl_pkey_export_to_file' => [
|
||||
'old' => ['bool', 'key'=>'resource|string|array', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
'new' => ['bool', 'key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'output_filename'=>'string', 'passphrase='=>'?string', 'options='=>'array'],
|
||||
],
|
||||
'openssl_pkey_free' => [
|
||||
'old' => ['void', 'key'=>'resource'],
|
||||
'new' => ['void', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
],
|
||||
'openssl_pkey_get_details' => [
|
||||
'old' => ['array|false', 'key'=>'resource'],
|
||||
'new' => ['array|false', 'key'=>'OpenSSLAsymmetricKey'],
|
||||
],
|
||||
'openssl_pkey_get_private' => [
|
||||
'old' => ['resource|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'private_key'=>'string', 'passphrase='=>'string'],
|
||||
],
|
||||
'openssl_pkey_get_public' => [
|
||||
'old' => ['resource|false', 'public_key'=>'resource|string'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|string'],
|
||||
],
|
||||
'openssl_pkey_new' => [
|
||||
'old' => ['resource|false', 'options='=>'array'],
|
||||
'new' => ['OpenSSLAsymmetricKey|false', 'options='=>'array'],
|
||||
],
|
||||
'openssl_private_decrypt' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
],
|
||||
'openssl_private_encrypt' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'string|resource|array', 'padding='=>'int'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
],
|
||||
'openssl_public_decrypt' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_decrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
],
|
||||
'openssl_public_encrypt' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'string|resource', 'padding='=>'int'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_encrypted_data'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'padding='=>'int'],
|
||||
],
|
||||
'openssl_random_pseudo_bytes' => [
|
||||
'old' => ['string|false', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
'new' => ['string', 'length'=>'int', '&w_strong_result='=>'bool'],
|
||||
],
|
||||
'openssl_sign' => [
|
||||
'old' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'new' => ['bool', 'data'=>'string', '&w_signature'=>'string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
],
|
||||
'openssl_spki_export' => [
|
||||
'old' => ['?string', 'spki'=>'string'],
|
||||
'new' => ['false|string', 'spki'=>'string'],
|
||||
],
|
||||
'openssl_spki_export_challenge' => [
|
||||
'old' => ['?string', 'spki'=>'string'],
|
||||
'new' => ['false|string', 'spki'=>'string'],
|
||||
],
|
||||
'openssl_spki_new' => [
|
||||
'old' => ['?string', 'private_key'=>'resource', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
'new' => ['false|string', 'private_key'=>'OpenSSLAsymmetricKey', 'challenge'=>'string', 'digest_algo='=>'int'],
|
||||
],
|
||||
'openssl_verify' => [
|
||||
'old' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'resource|string', 'algorithm='=>'int|string'],
|
||||
'new' => ['int', 'data'=>'string', 'signature'=>'string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string', 'algorithm='=>'int|string'],
|
||||
],
|
||||
'openssl_x509_check_private_key' => [
|
||||
'old' => ['bool', 'certificate'=>'string|resource', 'private_key'=>'string|resource|array'],
|
||||
'new' => ['bool', 'certificate'=>'OpenSSLCertificate|string', 'private_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
],
|
||||
'openssl_x509_checkpurpose' => [
|
||||
'old' => ['bool|int', 'certificate'=>'string|resource', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
'new' => ['bool|int', 'certificate'=>'string|OpenSSLCertificate', 'purpose'=>'int', 'ca_info='=>'array', 'untrusted_certificates_file='=>'string'],
|
||||
],
|
||||
'openssl_x509_export' => [
|
||||
'old' => ['bool', 'certificate'=>'string|resource', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'certificate'=>'string|OpenSSLCertificate', '&w_output'=>'string', 'no_text='=>'bool'],
|
||||
],
|
||||
'openssl_x509_export_to_file' => [
|
||||
'old' => ['bool', 'certificate'=>'string|resource', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
'new' => ['bool', 'certificate'=>'string|OpenSSLCertificate', 'output_filename'=>'string', 'no_text='=>'bool'],
|
||||
],
|
||||
'openssl_x509_fingerprint' => [
|
||||
'old' => ['string|false', 'certificate'=>'string|resource', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
'new' => ['string|false', 'certificate'=>'string|OpenSSLCertificate', 'digest_algo='=>'string', 'binary='=>'bool'],
|
||||
],
|
||||
'openssl_x509_free' => [
|
||||
'old' => ['void', 'certificate'=>'resource'],
|
||||
'new' => ['void', 'certificate'=>'OpenSSLCertificate'],
|
||||
],
|
||||
'openssl_x509_parse' => [
|
||||
'old' => ['array|false', 'certificate'=>'string|resource', 'short_names='=>'bool'],
|
||||
'new' => ['array|false', 'certificate'=>'string|OpenSSLCertificate', 'short_names='=>'bool'],
|
||||
],
|
||||
'openssl_x509_read' => [
|
||||
'old' => ['resource|false', 'certificate'=>'string|resource'],
|
||||
'new' => ['OpenSSLCertificate|false', 'certificate'=>'string|OpenSSLCertificate'],
|
||||
],
|
||||
'openssl_x509_verify' => [
|
||||
'old' => ['int', 'certificate'=>'string|resource', 'public_key'=>'string|resource'],
|
||||
'new' => ['int', 'certificate'=>'OpenSSLCertificate|string', 'public_key'=>'OpenSSLAsymmetricKey|OpenSSLCertificate|array|string'],
|
||||
],
|
||||
'password_hash' => [
|
||||
'old' => ['string|false|null', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
'new' => ['string', 'password'=>'string', 'algo'=>'?string|?int', 'options='=>'array'],
|
||||
],
|
||||
'pg_fetch_all' => [
|
||||
'old' => ['array<int,array>|false', 'result'=>'resource', 'mode='=>'int'],
|
||||
'new' => ['array<int,array>', 'result'=>'resource', 'mode='=>'int'],
|
||||
],
|
||||
'pg_fetch_all_columns' => [
|
||||
'old' => ['array<int,?string>|false', 'result'=>'resource', 'field='=>'int'],
|
||||
'new' => ['array<int,?string>', 'result'=>'resource', 'field='=>'int'],
|
||||
],
|
||||
'proc_get_status' => [
|
||||
'old' => ['array<string,int|string|bool>|false', 'process'=>'resource'],
|
||||
'new' => ['array<string,int|string|bool>', 'process'=>'resource'],
|
||||
],
|
||||
'sem_acquire' => [
|
||||
'old' => ['bool', 'semaphore'=>'resource', 'non_blocking='=>'bool'],
|
||||
'new' => ['bool', 'semaphore'=>'SysvSemaphore', 'non_blocking='=>'bool'],
|
||||
],
|
||||
'sem_get' => [
|
||||
'old' => ['resource|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
'new' => ['SysvSemaphore|false', 'key'=>'int', 'max_acquire='=>'int', 'permissions='=>'int', 'auto_release='=>'bool'],
|
||||
],
|
||||
'sem_release' => [
|
||||
'old' => ['bool', 'semaphore'=>'resource'],
|
||||
'new' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
],
|
||||
'sem_remove' => [
|
||||
'old' => ['bool', 'semaphore'=>'resource'],
|
||||
'new' => ['bool', 'semaphore'=>'SysvSemaphore'],
|
||||
],
|
||||
'shm_attach' => [
|
||||
'old' => ['resource', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
'new' => ['SysvSharedMemory', 'key'=>'int', 'size='=>'int', 'permissions='=>'int'],
|
||||
],
|
||||
'shm_detach' => [
|
||||
'old' => ['bool', 'shm'=>'resource'],
|
||||
'new' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
],
|
||||
'shm_get_var' => [
|
||||
'old' => ['mixed', 'shm'=>'resource', 'key'=>'int'],
|
||||
'new' => ['mixed', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
],
|
||||
'shm_has_var' => [
|
||||
'old' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'new' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
],
|
||||
'shm_put_var' => [
|
||||
'old' => ['bool', 'shm'=>'resource', 'key'=>'int', 'value'=>'mixed'],
|
||||
'new' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int', 'value'=>'mixed'],
|
||||
],
|
||||
'shm_remove' => [
|
||||
'old' => ['bool', 'shm'=>'resource'],
|
||||
'new' => ['bool', 'shm'=>'SysvSharedMemory'],
|
||||
],
|
||||
'shm_remove_var' => [
|
||||
'old' => ['bool', 'shm'=>'resource', 'key'=>'int'],
|
||||
'new' => ['bool', 'shm'=>'SysvSharedMemory', 'key'=>'int'],
|
||||
],
|
||||
'shmop_close' => [
|
||||
'old' => ['void', 'shmop'=>'resource'],
|
||||
'new' => ['void', 'shmop'=>'Shmop'],
|
||||
],
|
||||
'shmop_delete' => [
|
||||
'old' => ['bool', 'shmop'=>'resource'],
|
||||
'new' => ['bool', 'shmop'=>'Shmop'],
|
||||
],
|
||||
'shmop_open' => [
|
||||
'old' => ['resource|false', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
'new' => ['Shmop', 'key'=>'int', 'mode'=>'string', 'permissions'=>'int', 'size'=>'int'],
|
||||
],
|
||||
'shmop_read' => [
|
||||
'old' => ['string|false', 'shmop'=>'resource', 'offset'=>'int', 'size'=>'int'],
|
||||
'new' => ['string', 'shmop'=>'Shmop', 'offset'=>'int', 'size'=>'int'],
|
||||
],
|
||||
'shmop_size' => [
|
||||
'old' => ['int', 'shmop'=>'resource'],
|
||||
'new' => ['int', 'shmop'=>'Shmop'],
|
||||
],
|
||||
'shmop_write' => [
|
||||
'old' => ['int|false', 'shmop'=>'resource', 'data'=>'string', 'offset'=>'int'],
|
||||
'new' => ['int', 'shmop'=>'Shmop', 'data'=>'string', 'offset'=>'int'],
|
||||
],
|
||||
'simplexml_import_dom' => [
|
||||
'old' => ['SimpleXMLElement|false', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
'new' => ['SimpleXMLElement', 'node'=>'DOMNode', 'class_name='=>'string'],
|
||||
],
|
||||
'sleep' => [
|
||||
'old' => ['int|false', 'seconds'=>'int'],
|
||||
'new' => ['int', 'seconds'=>'int'],
|
||||
],
|
||||
'socket_accept' => [
|
||||
'old' => ['resource|false', 'socket'=>'resource'],
|
||||
'new' => ['Socket|false', 'socket'=>'Socket'],
|
||||
],
|
||||
'socket_addrinfo_bind' => [
|
||||
'old' => ['?resource', 'address'=>'resource'],
|
||||
'new' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
],
|
||||
'socket_addrinfo_connect' => [
|
||||
'old' => ['?resource', 'address'=>'resource'],
|
||||
'new' => ['Socket|false', 'address'=>'AddressInfo'],
|
||||
],
|
||||
'socket_addrinfo_explain' => [
|
||||
'old' => ['array', 'address'=>'resource'],
|
||||
'new' => ['array', 'address'=>'AddressInfo'],
|
||||
],
|
||||
'socket_addrinfo_lookup' => [
|
||||
'old' => ['resource[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
'new' => ['AddressInfo[]', 'host'=>'string', 'service='=>'?string', 'hints='=>'array'],
|
||||
],
|
||||
'socket_bind' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
],
|
||||
'socket_clear_error' => [
|
||||
'old' => ['void', 'socket='=>'resource'],
|
||||
'new' => ['void', 'socket='=>'Socket'],
|
||||
],
|
||||
'socket_close' => [
|
||||
'old' => ['void', 'socket'=>'resource'],
|
||||
'new' => ['void', 'socket'=>'Socket'],
|
||||
],
|
||||
'socket_connect' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'address'=>'string', 'port='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'address'=>'string', 'port='=>'int'],
|
||||
],
|
||||
'socket_create' => [
|
||||
'old' => ['resource|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
'new' => ['Socket|false', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int'],
|
||||
],
|
||||
'socket_create_listen' => [
|
||||
'old' => ['resource|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
'new' => ['Socket|false', 'port'=>'int', 'backlog='=>'int'],
|
||||
],
|
||||
'socket_create_pair' => [
|
||||
'old' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'resource[]'],
|
||||
'new' => ['bool', 'domain'=>'int', 'type'=>'int', 'protocol'=>'int', '&w_pair'=>'Socket[]'],
|
||||
],
|
||||
'socket_export_stream' => [
|
||||
'old' => ['resource|false', 'socket'=>'resource'],
|
||||
'new' => ['resource|false', 'socket'=>'Socket'],
|
||||
],
|
||||
'socket_get_option' => [
|
||||
'old' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'new' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
],
|
||||
'socket_get_status' => [
|
||||
'old' => ['array<string,mixed>', 'stream'=>'resource'],
|
||||
'new' => ['array<string,mixed>', 'stream'=>'Socket'],
|
||||
],
|
||||
'socket_getopt' => [
|
||||
'old' => ['array|false|int', 'socket'=>'resource', 'level'=>'int', 'option'=>'int'],
|
||||
'new' => ['array|false|int', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int'],
|
||||
],
|
||||
'socket_getpeername' => [
|
||||
'old' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
],
|
||||
'socket_getsockname' => [
|
||||
'old' => ['bool', 'socket'=>'resource', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
],
|
||||
'socket_import_stream' => [
|
||||
'old' => ['resource|false|null', 'stream'=>'resource'],
|
||||
'new' => ['Socket|false', 'stream'=>'resource'],
|
||||
],
|
||||
'socket_last_error' => [
|
||||
'old' => ['int', 'socket='=>'resource'],
|
||||
'new' => ['int', 'socket='=>'Socket'],
|
||||
],
|
||||
'socket_listen' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'backlog='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'backlog='=>'int'],
|
||||
],
|
||||
'socket_read' => [
|
||||
'old' => ['string|false', 'socket'=>'resource', 'length'=>'int', 'mode='=>'int'],
|
||||
'new' => ['string|false', 'socket'=>'Socket', 'length'=>'int', 'mode='=>'int'],
|
||||
],
|
||||
'socket_recv' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
],
|
||||
'socket_recvfrom' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', '&w_data'=>'string', 'length'=>'int', 'flags'=>'int', '&w_address'=>'string', '&w_port='=>'int'],
|
||||
],
|
||||
'socket_recvmsg' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', '&w_message'=>'array', 'flags='=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', '&w_message'=>'array', 'flags='=>'int'],
|
||||
],
|
||||
'socket_select' => [
|
||||
'old' => ['int|false', '&rw_read'=>'resource[]|null', '&rw_write'=>'resource[]|null', '&rw_except'=>'resource[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
'new' => ['int|false', '&rw_read'=>'Socket[]|null', '&rw_write'=>'Socket[]|null', '&rw_except'=>'Socket[]|null', 'seconds'=>'int', 'microseconds='=>'int'],
|
||||
],
|
||||
'socket_send' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int'],
|
||||
],
|
||||
'socket_sendmsg' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', 'message'=>'array', 'flags='=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', 'message'=>'array', 'flags='=>'int'],
|
||||
],
|
||||
'socket_sendto' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length'=>'int', 'flags'=>'int', 'address'=>'string', 'port='=>'int'],
|
||||
],
|
||||
'socket_set_block' => [
|
||||
'old' => ['bool', 'socket'=>'resource'],
|
||||
'new' => ['bool', 'socket'=>'Socket'],
|
||||
],
|
||||
'socket_set_blocking' => [
|
||||
'old' => ['bool', 'stream'=>'resource', 'enable'=>'bool'],
|
||||
'new' => ['bool', 'stream'=>'Socket', 'enable'=>'bool'],
|
||||
],
|
||||
'socket_set_nonblock' => [
|
||||
'old' => ['bool', 'socket'=>'resource'],
|
||||
'new' => ['bool', 'socket'=>'Socket'],
|
||||
],
|
||||
'socket_set_option' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
],
|
||||
'socket_setopt' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'level'=>'int', 'option'=>'int', 'value'=>'int|string|array'],
|
||||
],
|
||||
'socket_shutdown' => [
|
||||
'old' => ['bool', 'socket'=>'resource', 'mode='=>'int'],
|
||||
'new' => ['bool', 'socket'=>'Socket', 'mode='=>'int'],
|
||||
],
|
||||
'socket_write' => [
|
||||
'old' => ['int|false', 'socket'=>'resource', 'data'=>'string', 'length='=>'int'],
|
||||
'new' => ['int|false', 'socket'=>'Socket', 'data'=>'string', 'length='=>'int'],
|
||||
],
|
||||
'socket_wsaprotocol_info_export' => [
|
||||
'old' => ['string|false', 'socket'=>'resource', 'process_id'=>'int'],
|
||||
'new' => ['string|false', 'socket'=>'Socket', 'process_id'=>'int'],
|
||||
],
|
||||
'socket_wsaprotocol_info_import' => [
|
||||
'old' => ['resource|false', 'info_id'=>'string'],
|
||||
'new' => ['Socket|false', 'info_id'=>'string'],
|
||||
],
|
||||
'strchr' => [
|
||||
'old' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'new' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
],
|
||||
'stream_bucket_new' => [
|
||||
'old' => ['resource|false', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
'new' => ['object', 'stream'=>'resource', 'buffer'=>'string'],
|
||||
],
|
||||
'stream_set_chunk_size' => [
|
||||
'old' => ['int|false', 'stream'=>'resource', 'size'=>'int'],
|
||||
'new' => ['int', 'stream'=>'resource', 'size'=>'int'],
|
||||
],
|
||||
'stripos' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'new' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
'stristr' => [
|
||||
'old' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'new' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
],
|
||||
'strpos' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'new' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
'strrchr' => [
|
||||
'old' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int'],
|
||||
'new' => ['string|false', 'haystack'=>'string', 'needle'=>'string'],
|
||||
],
|
||||
'strripos' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'new' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
'strrpos' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string|int', 'offset='=>'int'],
|
||||
'new' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset='=>'int'],
|
||||
],
|
||||
'strstr' => [
|
||||
'old' => ['string|false', 'haystack'=>'string', 'needle'=>'string|int', 'before_needle='=>'bool'],
|
||||
'new' => ['string|false', 'haystack'=>'string', 'needle'=>'string', 'before_needle='=>'bool'],
|
||||
],
|
||||
'substr' => [
|
||||
'old' => ['string|false', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
'new' => ['string', 'string'=>'string', 'offset'=>'int', 'length='=>'int'],
|
||||
],
|
||||
'substr_compare' => [
|
||||
'old' => ['int|false', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
'new' => ['int', 'haystack'=>'string', 'needle'=>'string', 'offset'=>'int', 'length='=>'int', 'case_insensitive='=>'bool'],
|
||||
],
|
||||
'timezone_identifiers_list' => [
|
||||
'old' => ['list<string>|false', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
'new' => ['list<string>', 'timezoneGroup='=>'int', 'countryCode='=>'?string'],
|
||||
],
|
||||
'timezone_offset_get' => [
|
||||
'old' => ['int|false', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
'new' => ['int', 'object'=>'DateTimeZone', 'datetime'=>'DateTimeInterface'],
|
||||
],
|
||||
'version_compare' => [
|
||||
'old' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\''],
|
||||
'new' => ['int|bool', 'version1'=>'string', 'version2'=>'string', 'operator='=>'?(\'\x3c\'|\'lt\'|\'\x3c=\'|\'le\'|\'\x3e\'|\'gt\'|\'\x3e=\'|\'ge\'|\'==\'|\'=\'|\'eq\'|\'!=\'|\'\x3c\x3e\'|\'ne\')'],
|
||||
],
|
||||
'xml_get_current_byte_index' => [
|
||||
'old' => ['int|false', 'parser'=>'resource'],
|
||||
'new' => ['int', 'parser'=>'XMLParser'],
|
||||
],
|
||||
'xml_get_current_column_number' => [
|
||||
'old' => ['int|false', 'parser'=>'resource'],
|
||||
'new' => ['int', 'parser'=>'XMLParser'],
|
||||
],
|
||||
'xml_get_current_line_number' => [
|
||||
'old' => ['int|false', 'parser'=>'resource'],
|
||||
'new' => ['int', 'parser'=>'XMLParser'],
|
||||
],
|
||||
'xml_get_error_code' => [
|
||||
'old' => ['int|false', 'parser'=>'resource'],
|
||||
'new' => ['int', 'parser'=>'XMLParser'],
|
||||
],
|
||||
'xml_parse' => [
|
||||
'old' => ['int', 'parser'=>'resource', 'data'=>'string', 'is_final='=>'bool'],
|
||||
'new' => ['int', 'parser'=>'XMLParser', 'data'=>'string', 'is_final='=>'bool'],
|
||||
],
|
||||
'xml_parse_into_struct' => [
|
||||
'old' => ['int', 'parser'=>'resource', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
'new' => ['int', 'parser'=>'XMLParser', 'data'=>'string', '&w_values'=>'array', '&w_index='=>'array'],
|
||||
],
|
||||
'xml_parser_create' => [
|
||||
'old' => ['resource', 'encoding='=>'string'],
|
||||
'new' => ['XMLParser', 'encoding='=>'string'],
|
||||
],
|
||||
'xml_parser_create_ns' => [
|
||||
'old' => ['resource', 'encoding='=>'string', 'separator='=>'string'],
|
||||
'new' => ['XMLParser', 'encoding='=>'string', 'separator='=>'string'],
|
||||
],
|
||||
'xml_parser_free' => [
|
||||
'old' => ['bool', 'parser'=>'resource'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser'],
|
||||
],
|
||||
'xml_parser_get_option' => [
|
||||
'old' => ['mixed|false', 'parser'=>'resource', 'option'=>'int'],
|
||||
'new' => ['int|string', 'parser'=>'XMLParser', 'option'=>'int'],
|
||||
],
|
||||
'xml_parser_set_option' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'option'=>'int', 'value'=>'int|string'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'option'=>'int', 'value'=>'int|string'],
|
||||
],
|
||||
'xml_set_character_data_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_default_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_element_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'start_handler'=>'callable', 'end_handler'=>'callable'],
|
||||
],
|
||||
'xml_set_end_namespace_decl_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_external_entity_ref_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_notation_decl_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_object' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'object'=>'object'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'object'=>'object'],
|
||||
],
|
||||
'xml_set_processing_instruction_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_start_namespace_decl_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'xml_set_unparsed_entity_decl_handler' => [
|
||||
'old' => ['bool', 'parser'=>'resource', 'handler'=>'callable'],
|
||||
'new' => ['bool', 'parser'=>'XMLParser', 'handler'=>'callable'],
|
||||
],
|
||||
'XMLWriter::flush' => [
|
||||
'old' => ['string|int|false', 'empty='=>'bool'],
|
||||
'new' => ['string|int', 'empty='=>'bool'],
|
||||
],
|
||||
'XMLWriter::startAttributeNs' => [
|
||||
'old' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'?string'],
|
||||
'new' => ['bool', 'prefix'=>'?string', 'name'=>'string', 'namespace'=>'?string'],
|
||||
],
|
||||
'XMLWriter::writeAttributeNs' => [
|
||||
'old' => ['bool', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'?string', 'value'=>'string'],
|
||||
'new' => ['bool', 'prefix'=>'?string', 'name'=>'string', 'namespace'=>'?string', 'value'=>'string'],
|
||||
],
|
||||
'XMLWriter::writeDtdEntity' => [
|
||||
'old' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam'=>'bool', 'publicId'=>'string', 'systemId'=>'string', 'notationData'=>'string'],
|
||||
'new' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'?string', 'systemId='=>'?string', 'notationData='=>'?string'],
|
||||
],
|
||||
'xmlwriter_end_attribute' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_cdata' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_comment' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_document' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_dtd' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_dtd_attlist' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_dtd_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_dtd_entity' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_end_pi' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_flush' => [
|
||||
'old' => ['int|string', 'writer'=>'resource', 'empty='=>'bool'],
|
||||
'new' => ['int|string', 'writer'=>'XMLWriter', 'empty='=>'bool'],
|
||||
],
|
||||
'xmlwriter_full_end_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_open_memory' => [
|
||||
'old' => ['resource'],
|
||||
'new' => ['XMLWriter'],
|
||||
],
|
||||
'xmlwriter_open_uri' => [
|
||||
'old' => ['resource', 'uri'=>'string'],
|
||||
'new' => ['XMLWriter', 'uri'=>'string'],
|
||||
],
|
||||
'xmlwriter_output_memory' => [
|
||||
'old' => ['string', 'writer'=>'resource', 'flush='=>'bool'],
|
||||
'new' => ['string', 'writer'=>'XMLWriter', 'flush='=>'bool'],
|
||||
],
|
||||
'xmlwriter_set_indent' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'enable'=>'bool'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'enable'=>'bool'],
|
||||
],
|
||||
'xmlwriter_set_indent_string' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'indentation'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'indentation'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_attribute' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_attribute_ns' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_cdata' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_start_comment' => [
|
||||
'old' => ['bool', 'writer'=>'resource'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter'],
|
||||
],
|
||||
'xmlwriter_start_document' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'version='=>'string', 'encoding='=>'string', 'standalone='=>'string'],
|
||||
],
|
||||
'xmlwriter_start_dtd' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string', 'publicId='=>'string', 'systemId='=>'string'],
|
||||
],
|
||||
'xmlwriter_start_dtd_attlist' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_dtd_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'qualifiedName'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'qualifiedName'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_dtd_entity' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'isParam'=>'bool'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'isParam'=>'bool'],
|
||||
],
|
||||
'xmlwriter_start_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_element_ns' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string'],
|
||||
],
|
||||
'xmlwriter_start_pi' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'target'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string'],
|
||||
],
|
||||
'xmlwriter_text' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_attribute' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'value'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'value'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_attribute_ns' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'value'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_cdata' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_comment' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_dtd' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'publicId='=>'string', 'systemId='=>'string', 'content='=>'string'],
|
||||
],
|
||||
'xmlwriter_write_dtd_attlist' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_dtd_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_dtd_entity' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'string', 'systemId='=>'string', 'notationData='=>'string'],
|
||||
],
|
||||
'xmlwriter_write_element' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'name'=>'string', 'content='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'name'=>'string', 'content='=>'string'],
|
||||
],
|
||||
'xmlwriter_write_element_ns' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'prefix'=>'string', 'name'=>'string', 'namespace'=>'string', 'content='=>'string'],
|
||||
],
|
||||
'xmlwriter_write_pi' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'target'=>'string', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'target'=>'string', 'content'=>'string'],
|
||||
],
|
||||
'xmlwriter_write_raw' => [
|
||||
'old' => ['bool', 'writer'=>'resource', 'content'=>'string'],
|
||||
'new' => ['bool', 'writer'=>'XMLWriter', 'content'=>'string'],
|
||||
],
|
||||
],
|
||||
'removed' => [
|
||||
'create_function' => ['string', 'args'=>'string', 'code'=>'string'],
|
||||
'each' => ['array{0:int|string,key:int|string,1:mixed,value:mixed}', '&r_arr'=>'array'],
|
||||
'gmp_random' => ['GMP', 'limiter='=>'int'],
|
||||
'gzgetss' => ['string|false', 'zp'=>'resource', 'length'=>'int', 'allowable_tags='=>'string'],
|
||||
'image2wbmp' => ['bool', 'im'=>'resource', 'filename='=>'?string', 'threshold='=>'int'],
|
||||
'jpeg2wbmp' => ['bool', 'jpegname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'ldap_sort' => ['bool', 'link_identifier'=>'resource', 'result_identifier'=>'resource', 'sortfilter'=>'string'],
|
||||
'msg_receive' => ['bool', 'queue'=>'resource', 'desired_message_type'=>'int', '&w_received_message_type'=>'int', 'max_message_size'=>'int', '&w_message'=>'mixed', 'unserialize='=>'bool', 'flags='=>'int', '&w_error_code='=>'int'],
|
||||
'png2wbmp' => ['bool', 'pngname'=>'string', 'wbmpname'=>'string', 'dest_height'=>'int', 'dest_width'=>'int', 'threshold'=>'int'],
|
||||
'read_exif_data' => ['array', 'filename'=>'string', 'sections_needed='=>'string', 'sub_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||
'ReflectionType::isBuiltin' => ['bool'],
|
||||
'SplFileObject::fgetss' => ['string|false', 'allowable_tags='=>'string'],
|
||||
],
|
||||
];
|
||||
|
||||
+8
-6
@@ -16,10 +16,12 @@
|
||||
* @phan-file-suppress PhanPluginMixedKeyNoKey (read by Phan when analyzing this file)
|
||||
*/
|
||||
return [
|
||||
'new' => [
|
||||
'array_is_list' => ['bool', 'array'=>'array'],
|
||||
'fsync' => ['bool', 'stream'=>'resource'],
|
||||
],
|
||||
'old' => [
|
||||
],
|
||||
'added' => [
|
||||
'array_is_list' => ['bool', 'array'=>'array'],
|
||||
'fsync' => ['bool', 'stream'=>'resource'],
|
||||
],
|
||||
'changed' => [
|
||||
],
|
||||
'removed' => [
|
||||
],
|
||||
];
|
||||
|
||||
+10
-1
@@ -167,7 +167,7 @@ final class GlobalScope extends Scope
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Scope
|
||||
* @return never
|
||||
* Get the parent scope of this scope
|
||||
*/
|
||||
public function getParentScope(): Scope
|
||||
@@ -175,11 +175,17 @@ final class GlobalScope extends Scope
|
||||
throw new AssertionError("Global scope has no parent scope");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function getClassFQSEN(): FullyQualifiedClassName
|
||||
{
|
||||
throw new AssertionError("Cannot get class FQSEN on scope");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function getPropertyFQSEN(): FullyQualifiedPropertyName
|
||||
{
|
||||
throw new AssertionError("Cannot get class FQSEN on scope");
|
||||
@@ -194,6 +200,9 @@ final class GlobalScope extends Scope
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function getFunctionLikeFQSEN()
|
||||
{
|
||||
throw new AssertionError("Cannot get method/function/closure FQSEN on scope");
|
||||
|
||||
+8
-6
@@ -111,17 +111,17 @@ class Type implements Stringable
|
||||
* A legal type identifier (e.g. 'int' or 'DateTime')
|
||||
*/
|
||||
public const simple_type_regex =
|
||||
'(\??)(?:callable-(?:string|object|array)|associative-array|class-string|lowercase-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|mixed))|\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*)';
|
||||
'(\??)(?:callable-(?:string|object|array)|associative-array|class-string|lowercase-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|numeric-string|mixed))|\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*)';
|
||||
|
||||
public const simple_noncapturing_type_regex =
|
||||
'\\\\?(?:callable-(?:string|object|array)|associative-array|class-string|lowercase-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|mixed))|[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*)';
|
||||
'\\\\?(?:callable-(?:string|object|array)|associative-array|class-string|lowercase-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|numeric-string|mixed))|[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*)';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* A legal type identifier (e.g. 'int' or 'DateTime')
|
||||
*/
|
||||
public const simple_type_regex_or_this =
|
||||
'(\??)(callable-(?:string|object|array)|associative-array|class-string|lowercase-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|mixed))|\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*|\$this)';
|
||||
'(\??)(callable-(?:string|object|array)|associative-array|class-string|lowercase-string|numeric-string|phan-intersection-type|no-return|never-returns?|non-(?:zero-int|null-mixed|empty-(?:associative-array|array|list|string|lowercase-string|numeric-string|mixed))|\\\\?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*|\$this)';
|
||||
|
||||
public const shape_key_regex =
|
||||
'(?:[-.\/^;$%*+_a-zA-Z0-9\x7f-\xff]|\\\\(?:[nrt\\\\]|x[0-9a-fA-F]{2}))+\??';
|
||||
@@ -255,6 +255,7 @@ class Type implements Stringable
|
||||
'non-empty-lowercase-string' => true,
|
||||
'non-zero-int' => true,
|
||||
'null' => true,
|
||||
'numeric-string' => true,
|
||||
'object' => true,
|
||||
'phan-intersection-type' => true,
|
||||
'resource' => true,
|
||||
@@ -383,6 +384,7 @@ class Type implements Stringable
|
||||
/**
|
||||
* @throws Error this should not be called accidentally
|
||||
* @suppress PhanPluginRemoveDebugCall deliberate output before uncatchable Error
|
||||
* @return never
|
||||
*/
|
||||
public function __wakeup()
|
||||
{
|
||||
@@ -522,6 +524,7 @@ class Type implements Stringable
|
||||
);
|
||||
break;
|
||||
case 'lowercase-string':
|
||||
case 'numeric-string': // TODO: Actually support numeric-string
|
||||
$value = StringType::instance($is_nullable);
|
||||
break;
|
||||
case 'class-string':
|
||||
@@ -878,6 +881,7 @@ class Type implements Stringable
|
||||
return ScalarRawType::instance($is_nullable);
|
||||
case 'string':
|
||||
case 'lowercase-string':
|
||||
case 'numeric-string':
|
||||
return StringType::instance($is_nullable);
|
||||
case 'true':
|
||||
return TrueType::instance($is_nullable);
|
||||
@@ -1173,9 +1177,7 @@ class Type implements Stringable
|
||||
$key_type = GenericArrayType::KEY_MIXED;
|
||||
}
|
||||
|
||||
// TODO: Infer non-empty-array<int,Type> from conditions such as count($types) == 1
|
||||
if (count($types) === 1) {
|
||||
// @phan-suppress-next-line PhanPossiblyFalseTypeArgument
|
||||
return $make(\reset($types), $key_type);
|
||||
} elseif (count($types) > 1) {
|
||||
return new GenericMultiArrayType(
|
||||
@@ -1281,7 +1283,7 @@ class Type implements Stringable
|
||||
?CodeBase $code_base,
|
||||
?Context $context
|
||||
): Type {
|
||||
$result = IntersectionType::createFromTypes($template_parameter_type_list, $code_base, $context);
|
||||
$result = IntersectionType::createFromTypes($template_parameter_type_list, $code_base, $context, true);
|
||||
return $is_nullable ? $result->withIsNullable(true) : $result;
|
||||
}
|
||||
|
||||
|
||||
@@ -153,6 +153,6 @@ final class CallableStringType extends StringType implements CallableInterface
|
||||
*/
|
||||
protected function isSubtypeOfNonNullableType(Type $type, CodeBase $code_base): bool
|
||||
{
|
||||
return $type instanceof CallableType || \get_class($type) === StringType::class || $type instanceof MixedType;
|
||||
return $type instanceof CallableType || \in_array(\get_class($type), [StringType::class, NonEmptyStringType::class], true) || $type instanceof MixedType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,4 +132,16 @@ final class ClassStringType extends StringType
|
||||
Type::FROM_TYPE
|
||||
);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
public function isPossiblyFalsey(): bool
|
||||
{
|
||||
return $this->is_nullable;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
public function isAlwaysTruthy(): bool
|
||||
{
|
||||
return !$this->is_nullable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ use Phan\Language\Scope\ClosedScope;
|
||||
use Phan\Language\Type;
|
||||
use Phan\Language\UnionType;
|
||||
use Phan\Library\StringUtil;
|
||||
use Phan\PluginV3;
|
||||
|
||||
/**
|
||||
* Phan's base class for representations of `callable(MyClass):MyOtherClass` and `Closure(MyClass):MyOtherClass`
|
||||
@@ -131,9 +132,12 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function __clone()
|
||||
{
|
||||
throw new \AssertionError('Should not clone ClosureTypeDeclaration');
|
||||
throw new \AssertionError('Should not clone ' . static::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -389,6 +393,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @unused-param $fqsen
|
||||
* @return never
|
||||
* @override
|
||||
*/
|
||||
public function setFQSEN(FQSEN $fqsen): void
|
||||
@@ -417,6 +422,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
* @param list<Node|int|string|float> $args
|
||||
*/
|
||||
public function analyzeFunctionCall(CodeBase $code_base, Context $context, array $args, Node $node = null): void
|
||||
@@ -428,6 +434,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
* @unused-param $context
|
||||
* @unused-param $code_base
|
||||
* @param Parameter[] $parameter_list @unused-param
|
||||
* @return never
|
||||
* @override
|
||||
*/
|
||||
public function analyzeWithNewParams(Context $context, CodeBase $code_base, array $parameter_list): Context
|
||||
@@ -438,19 +445,26 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @override
|
||||
* @unused-param $parameter
|
||||
* @return never
|
||||
*/
|
||||
public function appendParameter(Parameter $parameter): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function clearParameterList(): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function cloneParameterList(): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -485,6 +499,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @override
|
||||
* @param list<Node|int|string|float> $args
|
||||
* @return never
|
||||
*/
|
||||
public function getDependentReturnType(CodeBase $code_base, Context $context, array $args): UnionType
|
||||
{
|
||||
@@ -535,7 +550,10 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
/**
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function getInternalScope(): ClosedScope
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -638,6 +656,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @param list<Parameter> $parameter_list
|
||||
* @return never
|
||||
*/
|
||||
public function setParameterList(array $parameter_list): void
|
||||
{
|
||||
@@ -646,6 +665,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @internal - moves real parameter defaults to the inferred phpdoc parameters
|
||||
* @return never
|
||||
*/
|
||||
public function inheritRealParameterDefaults(): void
|
||||
{
|
||||
@@ -697,6 +717,9 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function recordOutputReferenceParamName(string $parameter_name): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -709,22 +732,32 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @unused
|
||||
* @return never
|
||||
*/
|
||||
public function setComment(Comment $comment): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setFunctionCallAnalyzer(Closure $analyzer): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
public function addFunctionCallAnalyzer(Closure $analyzer): void
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function addFunctionCallAnalyzer(Closure $closure, PluginV3 $plugin = null): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setDependentReturnTypeClosure(Closure $analyzer): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -733,6 +766,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @override
|
||||
* @unused-param $has_return
|
||||
* @return never
|
||||
*/
|
||||
public function setHasReturn(bool $has_return): void
|
||||
{
|
||||
@@ -742,6 +776,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @override
|
||||
* @unused-param $has_yield
|
||||
* @return never
|
||||
*/
|
||||
public function setHasYield(bool $has_yield): void
|
||||
{
|
||||
@@ -756,6 +791,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @override
|
||||
* @unused-param $has_static_variable
|
||||
* @return never
|
||||
*/
|
||||
public function setHasStaticVariable(bool $has_static_variable): void
|
||||
{
|
||||
@@ -767,6 +803,9 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setInternalScope(ClosedScope $scope): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -775,6 +814,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @unused-param $is_return_type_undefined
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function setIsReturnTypeUndefined(bool $is_return_type_undefined): void
|
||||
{
|
||||
@@ -784,6 +824,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @unused-param $number
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function setNumberOfOptionalParameters(int $number): void
|
||||
{
|
||||
@@ -793,12 +834,16 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
/**
|
||||
* @unused-param $number
|
||||
* @override
|
||||
* @return never
|
||||
*/
|
||||
public function setNumberOfRequiredParameters(int $number): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setPHPDocParameterTypeMap(array $parameter_map): void
|
||||
{
|
||||
throw new \AssertionError('unexpected call to ' . __METHOD__);
|
||||
@@ -806,6 +851,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @param ?UnionType $union_type the raw phpdoc union type
|
||||
* @return never
|
||||
*/
|
||||
public function setPHPDocReturnType(?UnionType $union_type): void
|
||||
{
|
||||
@@ -888,12 +934,16 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
|
||||
/**
|
||||
* @param list<string> $suppress_issue_list
|
||||
* @return never
|
||||
*/
|
||||
public function setSuppressIssueSet(array $suppress_issue_list): void
|
||||
{
|
||||
throw new \AssertionError('should not call ' . __METHOD__);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setUnionType(UnionType $type): void
|
||||
{
|
||||
throw new \AssertionError('should not call ' . __METHOD__);
|
||||
@@ -1029,7 +1079,7 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
*/
|
||||
private function getReturnTemplateTypeExtractorClosure(CodeBase $code_base, TemplateType $template_type): ?Closure
|
||||
{
|
||||
$return_closure = $this->getUnionType()->getTemplateTypeExtractorClosure($code_base, $template_type);
|
||||
$return_closure = $this->return_type->getTemplateTypeExtractorClosure($code_base, $template_type);
|
||||
if (!$return_closure) {
|
||||
return null;
|
||||
}
|
||||
@@ -1102,6 +1152,9 @@ abstract class FunctionLikeDeclarationType extends Type implements FunctionInter
|
||||
return !$other->isDefiniteNonCallableType($code_base);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return never
|
||||
*/
|
||||
public function setAttributeList(array $attribute_list): void
|
||||
{
|
||||
throw new \AssertionError('should not call ' . __METHOD__);
|
||||
|
||||
@@ -763,7 +763,7 @@ class GenericArrayType extends ArrayType implements GenericArrayInterface
|
||||
return $this->asPHPDocUnionType();
|
||||
}
|
||||
// TODO: Override in array shape subclass
|
||||
return $new_element_type->asGenericArrayTypes($this->getKeyType());
|
||||
return $new_element_type->asGenericArrayTypes($this->key_type);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -82,10 +82,11 @@ final class IntersectionType extends Type
|
||||
* @param non-empty-list<Type|UnionType> $types
|
||||
* @param ?CodeBase $code_base
|
||||
* @param ?Context $context @unused-param
|
||||
* @param bool $suppress_union_type_warnings
|
||||
*/
|
||||
public static function createFromTypes(array $types, ?CodeBase $code_base, ?Context $context): Type
|
||||
public static function createFromTypes(array $types, ?CodeBase $code_base, ?Context $context, bool $suppress_union_type_warnings = false): Type
|
||||
{
|
||||
$new_types = self::flattenTypes($types);
|
||||
$new_types = self::flattenTypes($types, $code_base, $context, $suppress_union_type_warnings);
|
||||
if (!$new_types) {
|
||||
throw new AssertionError('Saw empty list of type_parts in intersection type');
|
||||
}
|
||||
@@ -131,14 +132,37 @@ final class IntersectionType extends Type
|
||||
* @param non-empty-list<Type|UnionType> $types
|
||||
* @return non-empty-list<Type>
|
||||
*/
|
||||
private static function flattenTypes(array $types): array
|
||||
private static function flattenTypes(array $types, ?CodeBase $code_base, ?Context $context, bool $suppress_union_type_warnings): array
|
||||
{
|
||||
$new_types = [];
|
||||
foreach ($types as $type) {
|
||||
if ($type instanceof UnionType) {
|
||||
$type_set = $type->getTypeSet();
|
||||
if (count($type_set) !== 1) {
|
||||
throw new AssertionError("Expected union type_parts to contain a single type");
|
||||
if ($suppress_union_type_warnings) {
|
||||
if ($code_base && $context) {
|
||||
Issue::maybeEmit(
|
||||
$code_base,
|
||||
$context,
|
||||
Issue::CommentUnsupportedUnionType,
|
||||
$context->getLineNumberStart(),
|
||||
$type
|
||||
);
|
||||
}
|
||||
$type = $type->withFlattenedArrayShapeOrLiteralTypeInstances();
|
||||
$type_set = $type->getTypeSet();
|
||||
if (count($type_set) !== 1) {
|
||||
if ($type->isArray()) {
|
||||
$type_set = [ArrayType::instance($type->containsNullable())];
|
||||
} elseif ($type->isObject()) {
|
||||
$type_set = [ObjectType::instance($type->containsNullable())];
|
||||
} else {
|
||||
$type_set = [MixedType::instance(false)];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new AssertionError("Expected union type_parts to contain a single type");
|
||||
}
|
||||
}
|
||||
$type = reset($type_set);
|
||||
if (!$type instanceof Type) {
|
||||
@@ -152,10 +176,13 @@ final class IntersectionType extends Type
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$new_types) {
|
||||
throw new AssertionError("Did not expect empty list of types for intersection type");
|
||||
}
|
||||
$has_exclusively_truthy = false;
|
||||
$has_array = false;
|
||||
$has_object = false;
|
||||
foreach ($new_types as $i => $type) {
|
||||
if (!$has_exclusively_truthy) {
|
||||
$has_exclusively_truthy = $type->isAlwaysTruthy();
|
||||
}
|
||||
// Convert callable&object to callable-object, etc.
|
||||
if ($type instanceof CallableType) {
|
||||
foreach ($new_types as $j => $other) {
|
||||
@@ -174,8 +201,54 @@ final class IntersectionType extends Type
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($type instanceof ObjectType) {
|
||||
$has_object = true;
|
||||
} elseif ($type instanceof ArrayType) {
|
||||
$has_array = true;
|
||||
}
|
||||
// TODO: Convert iterable<k,v> to Traversable<k,v> if another value is an object
|
||||
}
|
||||
if ($has_object) {
|
||||
foreach ($new_types as $j => $other) {
|
||||
if ($other->isObject()) {
|
||||
// do nothing
|
||||
} elseif (!$other->isPossiblyObject()) {
|
||||
// Emit PhanImpossibleIntersectionType elsewhere
|
||||
continue;
|
||||
} else {
|
||||
$other = $other->asObjectType();
|
||||
if ($other) {
|
||||
$new_types[$j] = $other;
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($has_array) {
|
||||
foreach ($new_types as $j => $other) {
|
||||
if ($other instanceof ArrayType) {
|
||||
continue;
|
||||
}
|
||||
if (!$other instanceof IterableType && !$other instanceof MixedType) {
|
||||
// Emit PhanImpossibleIntersectionType elsewhere
|
||||
continue;
|
||||
}
|
||||
$other = $other->asArrayType();
|
||||
if ($other) {
|
||||
$new_types[$j] = $other;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($has_exclusively_truthy) {
|
||||
foreach ($new_types as $j => $other) {
|
||||
if ($other->isAlwaysTruthy()) {
|
||||
continue;
|
||||
}
|
||||
if (!$other->isPossiblyTruthy()) {
|
||||
// Emit PhanImpossibleIntersectionType elsewhere
|
||||
continue;
|
||||
}
|
||||
$new_types[$j] = $other->asNonFalseyType();
|
||||
}
|
||||
}
|
||||
// @phan-suppress-next-line PhanPartialTypeMismatchReturn
|
||||
return \array_values($new_types);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ final class LiteralFloatType extends FloatType implements LiteralTypeInterface
|
||||
* @unused-param $is_nullable
|
||||
* @internal - do not call
|
||||
* @deprecated
|
||||
* @return never
|
||||
*/
|
||||
public static function instance(bool $is_nullable)
|
||||
{
|
||||
@@ -142,7 +143,7 @@ final class LiteralFloatType extends FloatType implements LiteralTypeInterface
|
||||
switch ($type::NAME) {
|
||||
case 'float':
|
||||
if ($type instanceof LiteralFloatType) {
|
||||
return $type->getValue() === $this->getValue();
|
||||
return $type->value === $this->value;
|
||||
}
|
||||
return true;
|
||||
case 'string':
|
||||
@@ -189,7 +190,7 @@ final class LiteralFloatType extends FloatType implements LiteralTypeInterface
|
||||
switch ($type::NAME) {
|
||||
case 'float':
|
||||
if ($type instanceof LiteralFloatType) {
|
||||
return $type->getValue() === $this->getValue();
|
||||
return $type->value === $this->value;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
@@ -210,7 +211,7 @@ final class LiteralFloatType extends FloatType implements LiteralTypeInterface
|
||||
if ($type instanceof ScalarType) {
|
||||
if ($type::NAME === 'float') {
|
||||
if ($type instanceof LiteralFloatType) {
|
||||
return $type->getValue() === $this->getValue();
|
||||
return $type->value === $this->value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user