mirror of https://github.com/joomla/joomla-cms.git
[4.3] Adding phan static code analyser (#39002)
* Adding phan static code analyser * Adding phan configuration files * Codestyle * Adding php-ast extension * Trying different way to install php-ast * Using our own php7.4-ast docker image * Removing unnecessary line
This commit is contained in:
parent
4dbd41f6c2
commit
b4b0f928cf
|
@ -53,6 +53,13 @@ steps:
|
|||
- ./libraries/vendor/bin/phpcs --extensions=php -p --standard=ruleset.xml .
|
||||
- echo $(date)
|
||||
|
||||
- name: phan
|
||||
image: joomlaprojects/docker-images:php7.4-ast
|
||||
depends_on: [ phpcs ]
|
||||
failure: ignore
|
||||
commands:
|
||||
- ./libraries/vendor/bin/phan
|
||||
|
||||
- name: npm
|
||||
image: node:16-bullseye-slim
|
||||
depends_on: [ phpcs ]
|
||||
|
@ -517,6 +524,6 @@ trigger:
|
|||
|
||||
---
|
||||
kind: signature
|
||||
hmac: 05c1f15cfad7564a9479535f7b0727b63056f9b38f66453cbefab877d7db52b9
|
||||
hmac: f496f213481b3afcec73da651fc838af21f76950954daac599e665ceb382cc2d
|
||||
|
||||
...
|
||||
|
|
|
@ -0,0 +1,357 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This configuration file was automatically generated by 'phan --init --init-level=5'
|
||||
*
|
||||
* TODOs (added by 'phan --init'):
|
||||
*
|
||||
* - Go through this file and verify that there are no missing/unnecessary files/directories.
|
||||
* (E.g. this only includes direct composer dependencies - You may have to manually add indirect composer dependencies to 'directory_list')
|
||||
* - Look at 'plugins' and add or remove plugins if appropriate (see https://github.com/phan/phan/tree/v4/.phan/plugins#plugins)
|
||||
* - Add global suppressions for pre-existing issues to suppress_issue_types (https://github.com/phan/phan/wiki/Tutorial-for-Analyzing-a-Large-Sloppy-Code-Base)
|
||||
* - Consider setting up a baseline if there are a large number of pre-existing issues (see `phan --extended-help`)
|
||||
*
|
||||
* This configuration will be read and overlaid on top of the
|
||||
* default configuration. Command line arguments will be applied
|
||||
* after this file is read.
|
||||
*
|
||||
* @see https://github.com/phan/phan/wiki/Phan-Config-Settings for all configurable options
|
||||
* @see https://github.com/phan/phan/tree/v4/src/Phan/Config.php
|
||||
*
|
||||
* A Note About Paths
|
||||
* ==================
|
||||
*
|
||||
* Files referenced from this file should be defined as
|
||||
*
|
||||
* ```
|
||||
* Config::projectPath('relative_path/to/file')
|
||||
* ```
|
||||
*
|
||||
* where the relative path is relative to the root of the
|
||||
* project which is defined as either the working directory
|
||||
* of the phan executable or a path passed in via the CLI
|
||||
* '-d' flag.
|
||||
*/
|
||||
|
||||
use Phan\Issue;
|
||||
|
||||
return [
|
||||
|
||||
// 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 types, param counts,
|
||||
// and checks for undefined classes/methods/functions)
|
||||
//
|
||||
// Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`, `'7.4'`, `null`.
|
||||
// If this is set to `null`,
|
||||
// then Phan assumes the PHP version which is closest to the minor version
|
||||
// of the php executable used to execute Phan.
|
||||
//
|
||||
// Note that the **only** effect of choosing `'5.6'` is to infer that functions removed in php 7.0 exist.
|
||||
// (See `backward_compatibility_checks` for additional options)
|
||||
// Automatically inferred from composer.json requirement for "php" of "^7.2.5"
|
||||
'target_php_version' => '7.2',
|
||||
|
||||
// If enabled, missing properties will be created when
|
||||
// they are first seen. If false, we'll report an
|
||||
// error message if there is an attempt to write
|
||||
// to a class property that wasn't explicitly
|
||||
// defined.
|
||||
'allow_missing_properties' => true,
|
||||
|
||||
// If enabled, null can be cast to any type and any
|
||||
// type can be cast to null. Setting this to true
|
||||
// will cut down on false positives.
|
||||
'null_casts_as_any_type' => true,
|
||||
|
||||
// If enabled, allow null to be cast as any array-like type.
|
||||
//
|
||||
// This is an incremental step in migrating away from `null_casts_as_any_type`.
|
||||
// If `null_casts_as_any_type` is true, this has no effect.
|
||||
'null_casts_as_array' => true,
|
||||
|
||||
// If enabled, allow any array-like type to be cast to null.
|
||||
// This is an incremental step in migrating away from `null_casts_as_any_type`.
|
||||
// If `null_casts_as_any_type` is true, this has no effect.
|
||||
'array_casts_as_null' => true,
|
||||
|
||||
// If enabled, scalars (int, float, bool, string, null)
|
||||
// are treated as if they can cast to each other.
|
||||
// This does not affect checks of array keys. See `scalar_array_key_cast`.
|
||||
'scalar_implicit_cast' => true,
|
||||
|
||||
// If enabled, any scalar array keys (int, string)
|
||||
// are treated as if they can cast to each other.
|
||||
// E.g. `array<int,stdClass>` can cast to `array<string,stdClass>` and vice versa.
|
||||
// Normally, a scalar type such as int could only cast to/from int and mixed.
|
||||
'scalar_array_key_cast' => true,
|
||||
|
||||
// If this has entries, scalars (int, float, bool, string, null)
|
||||
// are allowed to perform the casts listed.
|
||||
//
|
||||
// E.g. `['int' => ['float', 'string'], 'float' => ['int'], 'string' => ['int'], 'null' => ['string']]`
|
||||
// allows casting null to a string, but not vice versa.
|
||||
// (subset of `scalar_implicit_cast`)
|
||||
'scalar_implicit_partial' => [],
|
||||
|
||||
// If enabled, Phan will warn if **any** type in a method invocation's object
|
||||
// is definitely not an object,
|
||||
// or if **any** type in an invoked expression is not a callable.
|
||||
// Setting this to true will introduce numerous false positives
|
||||
// (and reveal some bugs).
|
||||
'strict_method_checking' => false,
|
||||
|
||||
// If enabled, Phan will warn if **any** type of the object expression for a property access
|
||||
// does not contain that property.
|
||||
'strict_object_checking' => false,
|
||||
|
||||
// If enabled, Phan will warn if **any** type in the argument's union type
|
||||
// cannot be cast to a type in the parameter's expected union type.
|
||||
// Setting this to true will introduce numerous false positives
|
||||
// (and reveal some bugs).
|
||||
'strict_param_checking' => false,
|
||||
|
||||
// If enabled, Phan will warn if **any** type in a property assignment's union type
|
||||
// cannot be cast to a type in the property's declared union type.
|
||||
// Setting this to true will introduce numerous false positives
|
||||
// (and reveal some bugs).
|
||||
'strict_property_checking' => false,
|
||||
|
||||
// If enabled, Phan will warn if **any** type in a returned value's union type
|
||||
// cannot be cast to the declared return type.
|
||||
// Setting this to true will introduce numerous false positives
|
||||
// (and reveal some bugs).
|
||||
'strict_return_checking' => false,
|
||||
|
||||
// If true, seemingly undeclared variables in the global
|
||||
// scope will be ignored.
|
||||
//
|
||||
// This is useful for projects with complicated cross-file
|
||||
// globals that you have no hope of fixing.
|
||||
'ignore_undeclared_variables_in_global_scope' => true,
|
||||
|
||||
// Set this to false to emit `PhanUndeclaredFunction` issues for internal functions that Phan has signatures for,
|
||||
// but aren't available in the codebase, or from Reflection.
|
||||
// (may lead to false positives if an extension isn't loaded)
|
||||
//
|
||||
// If this is true(default), then Phan will not warn.
|
||||
//
|
||||
// Even when this is false, Phan will still infer return values and check parameters of internal functions
|
||||
// if Phan has the signatures.
|
||||
'ignore_undeclared_functions_with_known_signatures' => true,
|
||||
|
||||
// Backwards Compatibility Checking. This is slow
|
||||
// and expensive, but you should consider running
|
||||
// it before upgrading your version of PHP to a
|
||||
// new version that has backward compatibility
|
||||
// breaks.
|
||||
//
|
||||
// If you are migrating from PHP 5 to PHP 7,
|
||||
// you should also look into using
|
||||
// [php7cc (no longer maintained)](https://github.com/sstalle/php7cc)
|
||||
// and [php7mar](https://github.com/Alexia/php7mar),
|
||||
// which have different backwards compatibility checks.
|
||||
//
|
||||
// If you are still using versions of php older than 5.6,
|
||||
// `PHP53CompatibilityPlugin` may be worth looking into if you are not running
|
||||
// syntax checks for php 5.3 through another method such as
|
||||
// `InvokePHPNativeSyntaxCheckPlugin` (see .phan/plugins/README.md).
|
||||
'backward_compatibility_checks' => false,
|
||||
|
||||
// If true, check to make sure the return type declared
|
||||
// in the doc-block (if any) matches the return type
|
||||
// declared in the method signature.
|
||||
'check_docblock_signature_return_type_match' => true,
|
||||
|
||||
// This setting maps case-insensitive strings to union types.
|
||||
//
|
||||
// This is useful if a project uses phpdoc that differs from the phpdoc2 standard.
|
||||
//
|
||||
// If the corresponding value is the empty string,
|
||||
// then Phan will ignore that union type (E.g. can ignore 'the' in `@return the value`)
|
||||
//
|
||||
// If the corresponding value is not empty,
|
||||
// then Phan will act as though it saw the corresponding UnionTypes(s)
|
||||
// when the keys show up in a UnionType of `@param`, `@return`, `@var`, `@property`, etc.
|
||||
//
|
||||
// This matches the **entire string**, not parts of the string.
|
||||
// (E.g. `@return the|null` will still look for a class with the name `the`, but `@return the` will be ignored with the below setting)
|
||||
//
|
||||
// (These are not aliases, this setting is ignored outside of doc comments).
|
||||
// (Phan does not check if classes with these names exist)
|
||||
//
|
||||
// Example setting: `['unknown' => '', 'number' => 'int|float', 'char' => 'string', 'long' => 'int', 'the' => '']`
|
||||
'phpdoc_type_mapping' => [],
|
||||
|
||||
// Set to true in order to attempt to detect dead
|
||||
// (unreferenced) code. Keep in mind that the
|
||||
// results will only be a guess given that classes,
|
||||
// properties, constants and methods can be referenced
|
||||
// as variables (like `$class->$property` or
|
||||
// `$class->$method()`) in ways that we're unable
|
||||
// to make sense of.
|
||||
//
|
||||
// To more aggressively detect dead code,
|
||||
// you may want to set `dead_code_detection_prefer_false_negative` to `false`.
|
||||
'dead_code_detection' => false,
|
||||
|
||||
// Set to true in order to attempt to detect unused variables.
|
||||
// `dead_code_detection` will also enable unused variable detection.
|
||||
//
|
||||
// This has a few known false positives, e.g. for loops or branches.
|
||||
'unused_variable_detection' => false,
|
||||
|
||||
// Set to true in order to attempt to detect redundant and impossible conditions.
|
||||
//
|
||||
// This has some false positives involving loops,
|
||||
// variables set in branches of loops, and global variables.
|
||||
'redundant_condition_detection' => false,
|
||||
|
||||
// If enabled, Phan will act as though it's certain of real return types of a subset of internal functions,
|
||||
// even if those return types aren't available in reflection (real types were taken from php 7.3 or 8.0-dev, depending on target_php_version).
|
||||
//
|
||||
// Note that with php 7 and earlier, php would return null or false for many internal functions if the argument types or counts were incorrect.
|
||||
// As a result, enabling this setting with target_php_version 8.0 may result in false positives for `--redundant-condition-detection` when codebases also support php 7.x.
|
||||
'assume_real_types_for_internal_functions' => false,
|
||||
|
||||
// If true, this runs a quick version of checks that takes less
|
||||
// time at the cost of not running as thorough
|
||||
// of an analysis. You should consider setting this
|
||||
// to true only when you wish you had more **undiagnosed** issues
|
||||
// to fix in your code base.
|
||||
//
|
||||
// In quick-mode the scanner doesn't rescan a function
|
||||
// or a method's code block every time a call is seen.
|
||||
// This means that the problem here won't be detected:
|
||||
//
|
||||
// ```php
|
||||
// <?php
|
||||
// function test($arg):int {
|
||||
// return $arg;
|
||||
// }
|
||||
// test("abc");
|
||||
// ```
|
||||
//
|
||||
// This would normally generate:
|
||||
//
|
||||
// ```
|
||||
// test.php:3 PhanTypeMismatchReturn Returning type string but test() is declared to return int
|
||||
// ```
|
||||
//
|
||||
// The initial scan of the function's code block has no
|
||||
// type information for `$arg`. It isn't until we see
|
||||
// the call and rescan `test()`'s code block that we can
|
||||
// detect that it is actually returning the passed in
|
||||
// `string` instead of an `int` as declared.
|
||||
'quick_mode' => false,
|
||||
|
||||
// Override to hardcode existence and types of (non-builtin) globals in the global scope.
|
||||
// Class names should be prefixed with `\`.
|
||||
//
|
||||
// (E.g. `['_FOO' => '\FooClass', 'page' => '\PageClass', 'userId' => 'int']`)
|
||||
'globals_type_map' => [],
|
||||
|
||||
// The minimum severity level to report on. This can be
|
||||
// set to `Issue::SEVERITY_LOW`, `Issue::SEVERITY_NORMAL` or
|
||||
// `Issue::SEVERITY_CRITICAL`. Setting it to only
|
||||
// critical issues is a good place to start on a big
|
||||
// sloppy mature code base.
|
||||
'minimum_severity' => Issue::SEVERITY_NORMAL,
|
||||
|
||||
// Add any issue types (such as `'PhanUndeclaredMethod'`)
|
||||
// to this list to inhibit them from being reported.
|
||||
'suppress_issue_types' => ['PhanDeprecatedClass', 'PhanUndeclaredConstant','PhanDeprecatedFunction'],
|
||||
|
||||
// A regular expression to match files to be excluded
|
||||
// from parsing and analysis and will not be read at all.
|
||||
//
|
||||
// This is useful for excluding groups of test or example
|
||||
// directories/files, unanalyzable files, or files that
|
||||
// can't be removed for whatever reason.
|
||||
// (e.g. `'@Test\.php$@'`, or `'@vendor/.*/(tests|Tests)/@'`)
|
||||
'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
|
||||
|
||||
// A list of files that will be excluded from parsing and analysis
|
||||
// and will not be read at all.
|
||||
//
|
||||
// This is useful for excluding hopelessly unanalyzable
|
||||
// files that can't be removed for whatever reason.
|
||||
'exclude_file_list' => [
|
||||
'administrator\components\com_joomlaupdate\finalisation.php'
|
||||
],
|
||||
|
||||
// A directory list that defines files that will be excluded
|
||||
// from static analysis, but whose class and method
|
||||
// information should be included.
|
||||
//
|
||||
// Generally, you'll want to include the directories for
|
||||
// third-party code (such as "vendor/") in this list.
|
||||
//
|
||||
// n.b.: If you'd like to parse but not analyze 3rd
|
||||
// party code, directories containing that code
|
||||
// should be added to the `directory_list` as well as
|
||||
// to `exclude_analysis_directory_list`.
|
||||
'exclude_analysis_directory_list' => [
|
||||
'libraries/vendor/',
|
||||
'libraries/php-encryption',
|
||||
'libraries/phpass'
|
||||
],
|
||||
|
||||
// Enable this to enable checks of require/include statements referring to valid paths.
|
||||
// The settings `include_paths` and `warn_about_relative_include_statement` affect the checks.
|
||||
'enable_include_path_checks' => false,
|
||||
|
||||
// The number of processes to fork off during the analysis
|
||||
// phase.
|
||||
'processes' => 1,
|
||||
|
||||
// List of case-insensitive file extensions supported by Phan.
|
||||
// (e.g. `['php', 'html', 'htm']`)
|
||||
'analyzed_file_extensions' => [
|
||||
'php',
|
||||
],
|
||||
|
||||
// You can put paths to stubs of internal extensions in this config option.
|
||||
// If the corresponding extension is **not** loaded, then Phan will use the stubs instead.
|
||||
// Phan will continue using its detailed type annotations,
|
||||
// but load the constants, classes, functions, and classes (and their Reflection types)
|
||||
// from these stub files (doubling as valid php files).
|
||||
// Use a different extension from php to avoid accidentally loading these.
|
||||
// The `tools/make_stubs` script can be used to generate your own stubs (compatible with php 7.0+ right now)
|
||||
//
|
||||
// (e.g. `['xdebug' => '.phan/internal_stubs/xdebug.phan_php']`)
|
||||
'autoload_internal_extension_signatures' => [
|
||||
'redis' => '.phan/redis.phan_php',
|
||||
'memcached' => '.phan/memcached.phan_php',
|
||||
'dom' => '.phan/dom.phan_php',
|
||||
],
|
||||
|
||||
// A list of plugin files to execute.
|
||||
//
|
||||
// Plugins which are bundled with Phan can be added here by providing their name (e.g. `'AlwaysReturnPlugin'`)
|
||||
//
|
||||
// Documentation about available bundled plugins can be found [here](https://github.com/phan/phan/tree/v4/.phan/plugins).
|
||||
//
|
||||
// Alternately, you can pass in the full path to a PHP file with the plugin's implementation (e.g. `'vendor/phan/phan/.phan/plugins/AlwaysReturnPlugin.php'`)
|
||||
'plugins' => [],
|
||||
|
||||
// A list of directories that should be parsed for class and
|
||||
// method information. After excluding the directories
|
||||
// defined in `exclude_analysis_directory_list`, the remaining
|
||||
// files will be statically analyzed for errors.
|
||||
//
|
||||
// Thus, both first-party and third-party code being used by
|
||||
// your application should be included in this list.
|
||||
'directory_list' => [
|
||||
'libraries',
|
||||
'libraries/vendor/joomla',
|
||||
'administrator',
|
||||
'components',
|
||||
'plugins'
|
||||
],
|
||||
|
||||
// A list of individual files to include in analysis
|
||||
// with a path relative to the root directory of the
|
||||
// project.
|
||||
'file_list' => [],
|
||||
];
|
|
@ -0,0 +1,418 @@
|
|||
<?php
|
||||
// These stubs were generated by the phan stub generator.
|
||||
// @phan-stub-for-extension dom@20031129
|
||||
|
||||
namespace {
|
||||
class DOMAttr extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $name;
|
||||
public $ownerElement;
|
||||
public $schemaTypeInfo;
|
||||
public $specified;
|
||||
public $value;
|
||||
|
||||
// methods
|
||||
public function isId() {}
|
||||
public function __construct($name, $value = NULL) {}
|
||||
}
|
||||
|
||||
class DOMCdataSection extends \DOMText {
|
||||
|
||||
// methods
|
||||
public function __construct($value) {}
|
||||
}
|
||||
|
||||
class DOMCharacterData extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $data;
|
||||
public $length;
|
||||
|
||||
// methods
|
||||
public function substringData($offset, $count) {}
|
||||
public function appendData($arg) {}
|
||||
public function insertData($offset, $arg) {}
|
||||
public function deleteData($offset, $count) {}
|
||||
public function replaceData($offset, $count, $arg) {}
|
||||
}
|
||||
|
||||
class DOMComment extends \DOMCharacterData {
|
||||
|
||||
// methods
|
||||
public function __construct($value = NULL) {}
|
||||
}
|
||||
|
||||
class DOMConfiguration {
|
||||
|
||||
// methods
|
||||
public function setParameter($name, $value) {}
|
||||
public function getParameter($name = NULL) {}
|
||||
public function canSetParameter($name = NULL, $value = NULL) {}
|
||||
}
|
||||
|
||||
class DOMDocument extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $actualEncoding;
|
||||
public $config;
|
||||
public $doctype;
|
||||
public $documentElement;
|
||||
public $documentURI;
|
||||
public $encoding;
|
||||
public $formatOutput;
|
||||
public $implementation;
|
||||
public $preserveWhiteSpace;
|
||||
public $recover;
|
||||
public $resolveExternals;
|
||||
public $standalone;
|
||||
public $strictErrorChecking;
|
||||
public $substituteEntities;
|
||||
public $validateOnParse;
|
||||
public $version;
|
||||
public $xmlEncoding;
|
||||
public $xmlStandalone;
|
||||
public $xmlVersion;
|
||||
|
||||
// methods
|
||||
public function createElement($tagName, $value = NULL) {}
|
||||
public function createDocumentFragment() {}
|
||||
public function createTextNode($data) {}
|
||||
public function createComment($data) {}
|
||||
public function createCDATASection($data) {}
|
||||
public function createProcessingInstruction($target, $data) {}
|
||||
public function createAttribute($name) {}
|
||||
public function createEntityReference($name) {}
|
||||
public function getElementsByTagName($tagName) {}
|
||||
public function importNode(\DOMNode $importedNode, $deep) {}
|
||||
public function createElementNS($namespaceURI, $qualifiedName, $value = NULL) {}
|
||||
public function createAttributeNS($namespaceURI, $qualifiedName) {}
|
||||
public function getElementsByTagNameNS($namespaceURI, $localName) {}
|
||||
public function getElementById($elementId) {}
|
||||
public function adoptNode(\DOMNode $source) {}
|
||||
public function normalizeDocument() {}
|
||||
public function renameNode(\DOMNode $node, $namespaceURI, $qualifiedName) {}
|
||||
public function load($source, $options = NULL) {}
|
||||
public function save($file) {}
|
||||
public function loadXML($source, $options = NULL) {}
|
||||
public function saveXML(\DOMNode $node = NULL, $options = NULL) {}
|
||||
public function __construct($version = NULL, $encoding = NULL) {}
|
||||
public function validate() {}
|
||||
public function xinclude($options = NULL) {}
|
||||
public function loadHTML($source, $options = NULL) {}
|
||||
public function loadHTMLFile($source, $options = NULL) {}
|
||||
public function saveHTML() {}
|
||||
public function saveHTMLFile($file) {}
|
||||
public function schemaValidate($filename) {}
|
||||
public function schemaValidateSource($source) {}
|
||||
public function relaxNGValidate($filename) {}
|
||||
public function relaxNGValidateSource($source) {}
|
||||
public function registerNodeClass($baseClass, $extendedClass) {}
|
||||
}
|
||||
|
||||
class DOMDocumentFragment extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $name;
|
||||
|
||||
// methods
|
||||
public function __construct() {}
|
||||
public function appendXML($data) {}
|
||||
}
|
||||
|
||||
class DOMDocumentType extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $publicId;
|
||||
public $systemId;
|
||||
public $name;
|
||||
public $entities;
|
||||
public $notations;
|
||||
public $internalSubset;
|
||||
}
|
||||
|
||||
class DOMDomError {
|
||||
}
|
||||
|
||||
class DOMElement extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $schemaTypeInfo;
|
||||
public $tagName;
|
||||
|
||||
// methods
|
||||
public function getAttribute($name) {}
|
||||
public function setAttribute($name, $value) {}
|
||||
public function removeAttribute($name) {}
|
||||
public function getAttributeNode($name) {}
|
||||
public function setAttributeNode(\DOMAttr $newAttr) {}
|
||||
public function removeAttributeNode(\DOMAttr $oldAttr) {}
|
||||
public function getElementsByTagName($name) {}
|
||||
public function getAttributeNS($namespaceURI, $localName) {}
|
||||
public function setAttributeNS($namespaceURI, $qualifiedName, $value) {}
|
||||
public function removeAttributeNS($namespaceURI, $localName) {}
|
||||
public function getAttributeNodeNS($namespaceURI, $localName) {}
|
||||
public function setAttributeNodeNS(\DOMAttr $newAttr) {}
|
||||
public function getElementsByTagNameNS($namespaceURI, $localName) {}
|
||||
public function hasAttribute($name) {}
|
||||
public function hasAttributeNS($namespaceURI, $localName) {}
|
||||
public function setIdAttribute($name, $isId) {}
|
||||
public function setIdAttributeNS($namespaceURI, $localName, $isId) {}
|
||||
public function setIdAttributeNode(\DOMAttr $attr, $isId) {}
|
||||
public function __construct($name, $value = NULL, $uri = NULL) {}
|
||||
}
|
||||
|
||||
class DOMEntity extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $publicId;
|
||||
public $systemId;
|
||||
public $notationName;
|
||||
public $actualEncoding;
|
||||
public $encoding;
|
||||
public $version;
|
||||
}
|
||||
|
||||
class DOMEntityReference extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $name;
|
||||
|
||||
// methods
|
||||
public function __construct($name) {}
|
||||
}
|
||||
|
||||
class DOMErrorHandler {
|
||||
|
||||
// methods
|
||||
public function handleError(\DOMDomError $error) {}
|
||||
}
|
||||
|
||||
final class DOMException extends \Exception {
|
||||
|
||||
// properties
|
||||
public $code;
|
||||
public $message;
|
||||
public $file;
|
||||
public $line;
|
||||
}
|
||||
|
||||
class DOMImplementation {
|
||||
|
||||
// properties
|
||||
public $name;
|
||||
|
||||
// methods
|
||||
public function getFeature($feature, $version) {}
|
||||
public function hasFeature() {}
|
||||
public function createDocumentType($qualifiedName, $publicId, $systemId) {}
|
||||
public function createDocument($namespaceURI, $qualifiedName, \DOMDocumentType $docType) {}
|
||||
}
|
||||
|
||||
class DOMImplementationList {
|
||||
|
||||
// methods
|
||||
public function item($index) {}
|
||||
}
|
||||
|
||||
class DOMImplementationSource {
|
||||
|
||||
// methods
|
||||
public function getDomimplementation($features) {}
|
||||
public function getDomimplementations($features) {}
|
||||
}
|
||||
|
||||
class DOMLocator {
|
||||
}
|
||||
|
||||
class DOMNameList {
|
||||
|
||||
// methods
|
||||
public function getName($index) {}
|
||||
public function getNamespaceURI($index) {}
|
||||
}
|
||||
|
||||
class DOMNameSpaceNode {
|
||||
}
|
||||
|
||||
class DOMNamedNodeMap implements \Traversable {
|
||||
|
||||
// properties
|
||||
public $length;
|
||||
|
||||
// methods
|
||||
public function getNamedItem($name) {}
|
||||
public function setNamedItem(\DOMNode $arg) {}
|
||||
public function removeNamedItem($name = NULL) {}
|
||||
public function item($index = NULL) {}
|
||||
public function getNamedItemNS($namespaceURI = NULL, $localName = NULL) {}
|
||||
public function setNamedItemNS(\DOMNode $arg = NULL) {}
|
||||
public function removeNamedItemNS($namespaceURI = NULL, $localName = NULL) {}
|
||||
}
|
||||
|
||||
class DOMNode {
|
||||
|
||||
// properties
|
||||
public $nodeName;
|
||||
public $nodeValue;
|
||||
public $nodeType;
|
||||
public $parentNode;
|
||||
public $childNodes;
|
||||
public $firstChild;
|
||||
public $lastChild;
|
||||
public $previousSibling;
|
||||
public $nextSibling;
|
||||
public $attributes;
|
||||
public $ownerDocument;
|
||||
public $namespaceURI;
|
||||
public $prefix;
|
||||
public $localName;
|
||||
public $baseURI;
|
||||
public $textContent;
|
||||
|
||||
// methods
|
||||
public function insertBefore(\DOMNode $newChild, \DOMNode $refChild = NULL) {}
|
||||
public function replaceChild(\DOMNode $newChild, \DOMNode $oldChild) {}
|
||||
public function removeChild(\DOMNode $oldChild) {}
|
||||
public function appendChild(\DOMNode $newChild) {}
|
||||
public function hasChildNodes() {}
|
||||
public function cloneNode($deep = NULL) {}
|
||||
public function normalize() {}
|
||||
public function isSupported($feature, $version) {}
|
||||
public function hasAttributes() {}
|
||||
public function compareDocumentPosition(\DOMNode $other) {}
|
||||
public function isSameNode(\DOMNode $other) {}
|
||||
public function lookupPrefix($namespaceURI) {}
|
||||
public function isDefaultNamespace($namespaceURI) {}
|
||||
public function lookupNamespaceUri($prefix) {}
|
||||
public function isEqualNode(\DOMNode $arg) {}
|
||||
public function getFeature($feature, $version) {}
|
||||
public function setUserData($key, $data, $handler) {}
|
||||
public function getUserData($key) {}
|
||||
public function getNodePath() {}
|
||||
public function getLineNo() {}
|
||||
public function C14N($exclusive = NULL, $with_comments = NULL, array $xpath = NULL, array $ns_prefixes = NULL) {}
|
||||
public function C14NFile($uri, $exclusive = NULL, $with_comments = NULL, array $xpath = NULL, array $ns_prefixes = NULL) {}
|
||||
}
|
||||
|
||||
class DOMNodeList implements \Traversable {
|
||||
|
||||
// properties
|
||||
public $length;
|
||||
|
||||
// methods
|
||||
public function item($index) {}
|
||||
}
|
||||
|
||||
class DOMNotation extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $publicId;
|
||||
public $systemId;
|
||||
}
|
||||
|
||||
class DOMProcessingInstruction extends \DOMNode {
|
||||
|
||||
// properties
|
||||
public $target;
|
||||
public $data;
|
||||
|
||||
// methods
|
||||
public function __construct($name, $value = NULL) {}
|
||||
}
|
||||
|
||||
class DOMStringExtend {
|
||||
|
||||
// methods
|
||||
public function findOffset16($offset32) {}
|
||||
public function findOffset32($offset16) {}
|
||||
}
|
||||
|
||||
class DOMStringList {
|
||||
|
||||
// methods
|
||||
public function item($index) {}
|
||||
}
|
||||
|
||||
class DOMText extends \DOMCharacterData {
|
||||
|
||||
// properties
|
||||
public $wholeText;
|
||||
|
||||
// methods
|
||||
public function splitText($offset) {}
|
||||
public function isWhitespaceInElementContent() {}
|
||||
public function isElementContentWhitespace() {}
|
||||
public function replaceWholeText($content) {}
|
||||
public function __construct($value = NULL) {}
|
||||
}
|
||||
|
||||
class DOMTypeinfo {
|
||||
}
|
||||
|
||||
class DOMUserDataHandler {
|
||||
|
||||
// methods
|
||||
public function handle() {}
|
||||
}
|
||||
|
||||
class DOMXPath {
|
||||
|
||||
// properties
|
||||
public $document;
|
||||
|
||||
// methods
|
||||
public function __construct(\DOMDocument $doc) {}
|
||||
public function registerNamespace($prefix, $uri) {}
|
||||
public function query($expr, \DOMNode $context = NULL, $registerNodeNS = NULL) {}
|
||||
public function evaluate($expr, \DOMNode $context = NULL, $registerNodeNS = NULL) {}
|
||||
public function registerPhpFunctions() {}
|
||||
}
|
||||
|
||||
function dom_import_simplexml($node) {}
|
||||
const DOMSTRING_SIZE_ERR = 2;
|
||||
const DOM_HIERARCHY_REQUEST_ERR = 3;
|
||||
const DOM_INDEX_SIZE_ERR = 1;
|
||||
const DOM_INUSE_ATTRIBUTE_ERR = 10;
|
||||
const DOM_INVALID_ACCESS_ERR = 15;
|
||||
const DOM_INVALID_CHARACTER_ERR = 5;
|
||||
const DOM_INVALID_MODIFICATION_ERR = 13;
|
||||
const DOM_INVALID_STATE_ERR = 11;
|
||||
const DOM_NAMESPACE_ERR = 14;
|
||||
const DOM_NOT_FOUND_ERR = 8;
|
||||
const DOM_NOT_SUPPORTED_ERR = 9;
|
||||
const DOM_NO_DATA_ALLOWED_ERR = 6;
|
||||
const DOM_NO_MODIFICATION_ALLOWED_ERR = 7;
|
||||
const DOM_PHP_ERR = 0;
|
||||
const DOM_SYNTAX_ERR = 12;
|
||||
const DOM_VALIDATION_ERR = 16;
|
||||
const DOM_WRONG_DOCUMENT_ERR = 4;
|
||||
const XML_ATTRIBUTE_CDATA = 1;
|
||||
const XML_ATTRIBUTE_DECL_NODE = 16;
|
||||
const XML_ATTRIBUTE_ENTITY = 6;
|
||||
const XML_ATTRIBUTE_ENUMERATION = 9;
|
||||
const XML_ATTRIBUTE_ID = 2;
|
||||
const XML_ATTRIBUTE_IDREF = 3;
|
||||
const XML_ATTRIBUTE_IDREFS = 4;
|
||||
const XML_ATTRIBUTE_NMTOKEN = 7;
|
||||
const XML_ATTRIBUTE_NMTOKENS = 8;
|
||||
const XML_ATTRIBUTE_NODE = 2;
|
||||
const XML_ATTRIBUTE_NOTATION = 10;
|
||||
const XML_CDATA_SECTION_NODE = 4;
|
||||
const XML_COMMENT_NODE = 8;
|
||||
const XML_DOCUMENT_FRAG_NODE = 11;
|
||||
const XML_DOCUMENT_NODE = 9;
|
||||
const XML_DOCUMENT_TYPE_NODE = 10;
|
||||
const XML_DTD_NODE = 14;
|
||||
const XML_ELEMENT_DECL_NODE = 15;
|
||||
const XML_ELEMENT_NODE = 1;
|
||||
const XML_ENTITY_DECL_NODE = 17;
|
||||
const XML_ENTITY_NODE = 6;
|
||||
const XML_ENTITY_REF_NODE = 5;
|
||||
const XML_HTML_DOCUMENT_NODE = 13;
|
||||
const XML_LOCAL_NAMESPACE = 18;
|
||||
const XML_NAMESPACE_DECL_NODE = 18;
|
||||
const XML_NOTATION_NODE = 12;
|
||||
const XML_PI_NODE = 7;
|
||||
const XML_TEXT_NODE = 3;
|
||||
}
|
|
@ -0,0 +1,180 @@
|
|||
<?php
|
||||
// These stubs were generated by the phan stub generator.
|
||||
// @phan-stub-for-extension memcached@3.0.3
|
||||
|
||||
namespace {
|
||||
class Memcached {
|
||||
|
||||
// constants
|
||||
public const LIBMEMCACHED_VERSION_HEX = 16777240;
|
||||
public const OPT_COMPRESSION = -1001;
|
||||
public const OPT_COMPRESSION_TYPE = -1004;
|
||||
public const OPT_PREFIX_KEY = -1002;
|
||||
public const OPT_SERIALIZER = -1003;
|
||||
public const OPT_USER_FLAGS = -1006;
|
||||
public const OPT_STORE_RETRY_COUNT = -1005;
|
||||
public const HAVE_IGBINARY = false;
|
||||
public const HAVE_JSON = false;
|
||||
public const HAVE_MSGPACK = false;
|
||||
public const HAVE_SESSION = true;
|
||||
public const HAVE_SASL = true;
|
||||
public const OPT_HASH = 2;
|
||||
public const HASH_DEFAULT = 0;
|
||||
public const HASH_MD5 = 1;
|
||||
public const HASH_CRC = 2;
|
||||
public const HASH_FNV1_64 = 3;
|
||||
public const HASH_FNV1A_64 = 4;
|
||||
public const HASH_FNV1_32 = 5;
|
||||
public const HASH_FNV1A_32 = 6;
|
||||
public const HASH_HSIEH = 7;
|
||||
public const HASH_MURMUR = 8;
|
||||
public const OPT_DISTRIBUTION = 9;
|
||||
public const DISTRIBUTION_MODULA = 0;
|
||||
public const DISTRIBUTION_CONSISTENT = 1;
|
||||
public const DISTRIBUTION_VIRTUAL_BUCKET = 6;
|
||||
public const OPT_LIBKETAMA_COMPATIBLE = 16;
|
||||
public const OPT_LIBKETAMA_HASH = 17;
|
||||
public const OPT_TCP_KEEPALIVE = 32;
|
||||
public const OPT_BUFFER_WRITES = 10;
|
||||
public const OPT_BINARY_PROTOCOL = 18;
|
||||
public const OPT_NO_BLOCK = 0;
|
||||
public const OPT_TCP_NODELAY = 1;
|
||||
public const OPT_SOCKET_SEND_SIZE = 4;
|
||||
public const OPT_SOCKET_RECV_SIZE = 5;
|
||||
public const OPT_CONNECT_TIMEOUT = 14;
|
||||
public const OPT_RETRY_TIMEOUT = 15;
|
||||
public const OPT_DEAD_TIMEOUT = 36;
|
||||
public const OPT_SEND_TIMEOUT = 19;
|
||||
public const OPT_RECV_TIMEOUT = 20;
|
||||
public const OPT_POLL_TIMEOUT = 8;
|
||||
public const OPT_CACHE_LOOKUPS = 6;
|
||||
public const OPT_SERVER_FAILURE_LIMIT = 21;
|
||||
public const OPT_AUTO_EJECT_HOSTS = 28;
|
||||
public const OPT_HASH_WITH_PREFIX_KEY = 25;
|
||||
public const OPT_NOREPLY = 26;
|
||||
public const OPT_SORT_HOSTS = 12;
|
||||
public const OPT_VERIFY_KEY = 13;
|
||||
public const OPT_USE_UDP = 27;
|
||||
public const OPT_NUMBER_OF_REPLICAS = 29;
|
||||
public const OPT_RANDOMIZE_REPLICA_READ = 30;
|
||||
public const OPT_REMOVE_FAILED_SERVERS = 35;
|
||||
public const OPT_SERVER_TIMEOUT_LIMIT = 37;
|
||||
public const RES_SUCCESS = 0;
|
||||
public const RES_FAILURE = 1;
|
||||
public const RES_HOST_LOOKUP_FAILURE = 2;
|
||||
public const RES_UNKNOWN_READ_FAILURE = 7;
|
||||
public const RES_PROTOCOL_ERROR = 8;
|
||||
public const RES_CLIENT_ERROR = 9;
|
||||
public const RES_SERVER_ERROR = 10;
|
||||
public const RES_WRITE_FAILURE = 5;
|
||||
public const RES_DATA_EXISTS = 12;
|
||||
public const RES_NOTSTORED = 14;
|
||||
public const RES_NOTFOUND = 16;
|
||||
public const RES_PARTIAL_READ = 18;
|
||||
public const RES_SOME_ERRORS = 19;
|
||||
public const RES_NO_SERVERS = 20;
|
||||
public const RES_END = 21;
|
||||
public const RES_ERRNO = 26;
|
||||
public const RES_BUFFERED = 32;
|
||||
public const RES_TIMEOUT = 31;
|
||||
public const RES_BAD_KEY_PROVIDED = 33;
|
||||
public const RES_STORED = 15;
|
||||
public const RES_DELETED = 22;
|
||||
public const RES_STAT = 24;
|
||||
public const RES_ITEM = 25;
|
||||
public const RES_NOT_SUPPORTED = 28;
|
||||
public const RES_FETCH_NOTFINISHED = 30;
|
||||
public const RES_SERVER_MARKED_DEAD = 35;
|
||||
public const RES_UNKNOWN_STAT_KEY = 36;
|
||||
public const RES_INVALID_HOST_PROTOCOL = 34;
|
||||
public const RES_MEMORY_ALLOCATION_FAILURE = 17;
|
||||
public const RES_CONNECTION_SOCKET_CREATE_FAILURE = 11;
|
||||
public const RES_E2BIG = 37;
|
||||
public const RES_KEY_TOO_BIG = 39;
|
||||
public const RES_SERVER_TEMPORARILY_DISABLED = 47;
|
||||
public const RES_SERVER_MEMORY_ALLOCATION_FAILURE = 48;
|
||||
public const RES_AUTH_PROBLEM = 40;
|
||||
public const RES_AUTH_FAILURE = 41;
|
||||
public const RES_AUTH_CONTINUE = 42;
|
||||
public const RES_PAYLOAD_FAILURE = -1001;
|
||||
public const SERIALIZER_PHP = 1;
|
||||
public const SERIALIZER_IGBINARY = 2;
|
||||
public const SERIALIZER_JSON = 3;
|
||||
public const SERIALIZER_JSON_ARRAY = 4;
|
||||
public const SERIALIZER_MSGPACK = 5;
|
||||
public const COMPRESSION_FASTLZ = 2;
|
||||
public const COMPRESSION_ZLIB = 1;
|
||||
public const GET_PRESERVE_ORDER = 1;
|
||||
public const GET_EXTENDED = 2;
|
||||
public const GET_ERROR_RETURN_VALUE = false;
|
||||
|
||||
// methods
|
||||
public function __construct($persistent_id = NULL, $callback = NULL) {}
|
||||
public function getResultCode() {}
|
||||
public function getResultMessage() {}
|
||||
public function get($key, $cache_cb = NULL, $get_flags = NULL) {}
|
||||
public function getByKey($server_key, $key, $cache_cb = NULL, $get_flags = NULL) {}
|
||||
public function getMulti(array $keys, $get_flags = NULL) {}
|
||||
public function getMultiByKey($server_key, array $keys, $get_flags = NULL) {}
|
||||
public function getDelayed(array $keys, $with_cas = NULL, $value_cb = NULL) {}
|
||||
public function getDelayedByKey($server_key, array $keys, $with_cas = NULL, $value_cb = NULL) {}
|
||||
public function fetch() {}
|
||||
public function fetchAll() {}
|
||||
public function set($key, $value, $expiration = NULL) {}
|
||||
public function setByKey($server_key, $key, $value, $expiration = NULL) {}
|
||||
public function touch($key, $expiration) {}
|
||||
public function touchByKey($server_key, $key, $expiration) {}
|
||||
public function setMulti(array $items, $expiration = NULL) {}
|
||||
public function setMultiByKey($server_key, array $items, $expiration = NULL) {}
|
||||
public function cas($cas_token, $key, $value, $expiration = NULL) {}
|
||||
public function casByKey($cas_token, $server_key, $key, $value, $expiration = NULL) {}
|
||||
public function add($key, $value, $expiration = NULL) {}
|
||||
public function addByKey($server_key, $key, $value, $expiration = NULL) {}
|
||||
public function append($key, $value, $expiration = NULL) {}
|
||||
public function appendByKey($server_key, $key, $value, $expiration = NULL) {}
|
||||
public function prepend($key, $value, $expiration = NULL) {}
|
||||
public function prependByKey($server_key, $key, $value, $expiration = NULL) {}
|
||||
public function replace($key, $value, $expiration = NULL) {}
|
||||
public function replaceByKey($server_key, $key, $value, $expiration = NULL) {}
|
||||
public function delete($key, $time = NULL) {}
|
||||
public function deleteMulti($keys, $time = NULL) {}
|
||||
public function deleteByKey($server_key, $key, $time = NULL) {}
|
||||
public function deleteMultiByKey($server_key, $keys, $time = NULL) {}
|
||||
public function increment($key, $offset = NULL, $initial_value = NULL, $expiry = NULL) {}
|
||||
public function decrement($key, $offset = NULL, $initial_value = NULL, $expiry = NULL) {}
|
||||
public function incrementByKey($server_key, $key, $offset = NULL, $initial_value = NULL, $expiry = NULL) {}
|
||||
public function decrementByKey($server_key, $key, $offset = NULL, $initial_value = NULL, $expiry = NULL) {}
|
||||
public function addServer($host, $port, $weight = NULL) {}
|
||||
public function addServers(array $servers) {}
|
||||
public function getServerList() {}
|
||||
public function getServerByKey($server_key) {}
|
||||
public function resetServerList() {}
|
||||
public function quit() {}
|
||||
public function flushBuffers() {}
|
||||
public function getLastErrorMessage() {}
|
||||
public function getLastErrorCode() {}
|
||||
public function getLastErrorErrno() {}
|
||||
public function getLastDisconnectedServer() {}
|
||||
public function getStats($args) {}
|
||||
public function getVersion() {}
|
||||
public function getAllKeys() {}
|
||||
public function flush($delay = NULL) {}
|
||||
public function getOption($option) {}
|
||||
public function setOption($option, $value) {}
|
||||
public function setOptions($options) {}
|
||||
public function setBucket($host_map, $forward_map, $replicas) {}
|
||||
public function setSaslAuthData($username, $password) {}
|
||||
public function isPersistent() {}
|
||||
public function isPristine() {}
|
||||
}
|
||||
|
||||
class MemcachedException extends \RuntimeException {
|
||||
|
||||
// properties
|
||||
public $message;
|
||||
public $code;
|
||||
public $file;
|
||||
public $line;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,490 @@
|
|||
<?php
|
||||
// These stubs were generated by the phan stub generator.
|
||||
// @phan-stub-for-extension redis@3.1.4
|
||||
|
||||
namespace {
|
||||
class Redis {
|
||||
|
||||
// constants
|
||||
public const REDIS_NOT_FOUND = 0;
|
||||
public const REDIS_STRING = 1;
|
||||
public const REDIS_SET = 2;
|
||||
public const REDIS_LIST = 3;
|
||||
public const REDIS_ZSET = 4;
|
||||
public const REDIS_HASH = 5;
|
||||
public const PIPELINE = 2;
|
||||
public const ATOMIC = 0;
|
||||
public const MULTI = 1;
|
||||
public const OPT_SERIALIZER = 1;
|
||||
public const OPT_PREFIX = 2;
|
||||
public const OPT_READ_TIMEOUT = 3;
|
||||
public const SERIALIZER_NONE = 0;
|
||||
public const SERIALIZER_PHP = 1;
|
||||
public const OPT_SCAN = 4;
|
||||
public const SCAN_RETRY = 1;
|
||||
public const SCAN_NORETRY = 0;
|
||||
public const AFTER = 'after';
|
||||
public const BEFORE = 'before';
|
||||
|
||||
// methods
|
||||
public function __construct() {}
|
||||
public function __destruct() {}
|
||||
public function connect() {}
|
||||
public function pconnect() {}
|
||||
public function close() {}
|
||||
public function ping() {}
|
||||
public function echo() {}
|
||||
public function get() {}
|
||||
public function set() {}
|
||||
public function setex() {}
|
||||
public function psetex() {}
|
||||
public function setnx() {}
|
||||
public function getSet() {}
|
||||
public function randomKey() {}
|
||||
public function renameKey() {}
|
||||
public function renameNx() {}
|
||||
public function getMultiple() {}
|
||||
public function exists() {}
|
||||
public function delete() {}
|
||||
public function incr() {}
|
||||
public function incrBy() {}
|
||||
public function incrByFloat() {}
|
||||
public function decr() {}
|
||||
public function decrBy() {}
|
||||
public function type() {}
|
||||
public function append() {}
|
||||
public function getRange() {}
|
||||
public function setRange() {}
|
||||
public function getBit() {}
|
||||
public function setBit() {}
|
||||
public function strlen() {}
|
||||
public function getKeys() {}
|
||||
public function sort() {}
|
||||
public function sortAsc() {}
|
||||
public function sortAscAlpha() {}
|
||||
public function sortDesc() {}
|
||||
public function sortDescAlpha() {}
|
||||
public function lPush() {}
|
||||
public function rPush() {}
|
||||
public function lPushx() {}
|
||||
public function rPushx() {}
|
||||
public function lPop() {}
|
||||
public function rPop() {}
|
||||
public function blPop() {}
|
||||
public function brPop() {}
|
||||
public function lSize() {}
|
||||
public function lRemove() {}
|
||||
public function listTrim() {}
|
||||
public function lGet() {}
|
||||
public function lGetRange() {}
|
||||
public function lSet() {}
|
||||
public function lInsert() {}
|
||||
public function sAdd() {}
|
||||
public function sAddArray() {}
|
||||
public function sSize() {}
|
||||
public function sRemove() {}
|
||||
public function sMove() {}
|
||||
public function sPop() {}
|
||||
public function sRandMember() {}
|
||||
public function sContains() {}
|
||||
public function sMembers() {}
|
||||
public function sInter() {}
|
||||
public function sInterStore() {}
|
||||
public function sUnion() {}
|
||||
public function sUnionStore() {}
|
||||
public function sDiff() {}
|
||||
public function sDiffStore() {}
|
||||
public function setTimeout() {}
|
||||
public function save() {}
|
||||
public function bgSave() {}
|
||||
public function lastSave() {}
|
||||
public function flushDB() {}
|
||||
public function flushAll() {}
|
||||
public function dbSize() {}
|
||||
public function auth() {}
|
||||
public function ttl() {}
|
||||
public function pttl() {}
|
||||
public function persist() {}
|
||||
public function info() {}
|
||||
public function select() {}
|
||||
public function move() {}
|
||||
public function bgrewriteaof() {}
|
||||
public function slaveof() {}
|
||||
public function object() {}
|
||||
public function bitop() {}
|
||||
public function bitcount() {}
|
||||
public function bitpos() {}
|
||||
public function mset() {}
|
||||
public function msetnx() {}
|
||||
public function rpoplpush() {}
|
||||
public function brpoplpush() {}
|
||||
public function zAdd() {}
|
||||
public function zDelete() {}
|
||||
public function zRange() {}
|
||||
public function zRevRange() {}
|
||||
public function zRangeByScore() {}
|
||||
public function zRevRangeByScore() {}
|
||||
public function zRangeByLex() {}
|
||||
public function zRevRangeByLex() {}
|
||||
public function zLexCount() {}
|
||||
public function zRemRangeByLex() {}
|
||||
public function zCount() {}
|
||||
public function zDeleteRangeByScore() {}
|
||||
public function zDeleteRangeByRank() {}
|
||||
public function zCard() {}
|
||||
public function zScore() {}
|
||||
public function zRank() {}
|
||||
public function zRevRank() {}
|
||||
public function zInter() {}
|
||||
public function zUnion() {}
|
||||
public function zIncrBy() {}
|
||||
public function expireAt() {}
|
||||
public function pexpire() {}
|
||||
public function pexpireAt() {}
|
||||
public function hGet() {}
|
||||
public function hSet() {}
|
||||
public function hSetNx() {}
|
||||
public function hDel() {}
|
||||
public function hLen() {}
|
||||
public function hKeys() {}
|
||||
public function hVals() {}
|
||||
public function hGetAll() {}
|
||||
public function hExists() {}
|
||||
public function hIncrBy() {}
|
||||
public function hIncrByFloat() {}
|
||||
public function hMset() {}
|
||||
public function hMget() {}
|
||||
public function hStrLen() {}
|
||||
public function multi() {}
|
||||
public function discard() {}
|
||||
public function exec() {}
|
||||
public function pipeline() {}
|
||||
public function watch() {}
|
||||
public function unwatch() {}
|
||||
public function publish() {}
|
||||
public function subscribe() {}
|
||||
public function psubscribe() {}
|
||||
public function unsubscribe() {}
|
||||
public function punsubscribe() {}
|
||||
public function time() {}
|
||||
public function role() {}
|
||||
public function eval() {}
|
||||
public function evalsha() {}
|
||||
public function script() {}
|
||||
public function debug() {}
|
||||
public function dump() {}
|
||||
public function restore() {}
|
||||
public function migrate() {}
|
||||
public function getLastError() {}
|
||||
public function clearLastError() {}
|
||||
public function _prefix() {}
|
||||
public function _serialize() {}
|
||||
public function _unserialize() {}
|
||||
public function client() {}
|
||||
public function command() {}
|
||||
public function scan(&$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function hscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function zscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function sscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function pfadd() {}
|
||||
public function pfcount() {}
|
||||
public function pfmerge() {}
|
||||
public function getOption() {}
|
||||
public function setOption() {}
|
||||
public function config() {}
|
||||
public function slowlog() {}
|
||||
public function rawcommand() {}
|
||||
public function geoadd() {}
|
||||
public function geohash() {}
|
||||
public function geopos() {}
|
||||
public function geodist() {}
|
||||
public function georadius() {}
|
||||
public function georadiusbymember() {}
|
||||
public function getHost() {}
|
||||
public function getPort() {}
|
||||
public function getDBNum() {}
|
||||
public function getTimeout() {}
|
||||
public function getReadTimeout() {}
|
||||
public function getPersistentID() {}
|
||||
public function getAuth() {}
|
||||
public function isConnected() {}
|
||||
public function getMode() {}
|
||||
public function wait() {}
|
||||
public function pubsub() {}
|
||||
public function open() {}
|
||||
public function popen() {}
|
||||
public function lLen() {}
|
||||
public function sGetMembers() {}
|
||||
public function mget() {}
|
||||
public function expire() {}
|
||||
public function zunionstore() {}
|
||||
public function zinterstore() {}
|
||||
public function zRemove() {}
|
||||
public function zRem() {}
|
||||
public function zRemoveRangeByScore() {}
|
||||
public function zRemRangeByScore() {}
|
||||
public function zRemRangeByRank() {}
|
||||
public function zSize() {}
|
||||
public function substr() {}
|
||||
public function rename() {}
|
||||
public function del() {}
|
||||
public function keys() {}
|
||||
public function lrem() {}
|
||||
public function ltrim() {}
|
||||
public function lindex() {}
|
||||
public function lrange() {}
|
||||
public function scard() {}
|
||||
public function srem() {}
|
||||
public function sismember() {}
|
||||
public function zReverseRange() {}
|
||||
public function sendEcho() {}
|
||||
public function evaluate() {}
|
||||
public function evaluateSha() {}
|
||||
}
|
||||
|
||||
class RedisArray {
|
||||
|
||||
// methods
|
||||
public function __construct() {}
|
||||
public function __call($function_name, $arguments) {}
|
||||
public function _hosts() {}
|
||||
public function _target() {}
|
||||
public function _instance() {}
|
||||
public function _function() {}
|
||||
public function _distributor() {}
|
||||
public function _rehash() {}
|
||||
public function select() {}
|
||||
public function info() {}
|
||||
public function ping() {}
|
||||
public function flushdb() {}
|
||||
public function flushall() {}
|
||||
public function mget() {}
|
||||
public function mset() {}
|
||||
public function del() {}
|
||||
public function getOption() {}
|
||||
public function setOption() {}
|
||||
public function keys() {}
|
||||
public function save() {}
|
||||
public function bgsave() {}
|
||||
public function multi() {}
|
||||
public function exec() {}
|
||||
public function discard() {}
|
||||
public function unwatch() {}
|
||||
public function delete() {}
|
||||
public function getMultiple() {}
|
||||
}
|
||||
|
||||
class RedisCluster {
|
||||
|
||||
// constants
|
||||
public const REDIS_NOT_FOUND = 0;
|
||||
public const REDIS_STRING = 1;
|
||||
public const REDIS_SET = 2;
|
||||
public const REDIS_LIST = 3;
|
||||
public const REDIS_ZSET = 4;
|
||||
public const REDIS_HASH = 5;
|
||||
public const ATOMIC = 0;
|
||||
public const MULTI = 1;
|
||||
public const OPT_SERIALIZER = 1;
|
||||
public const OPT_PREFIX = 2;
|
||||
public const OPT_READ_TIMEOUT = 3;
|
||||
public const SERIALIZER_NONE = 0;
|
||||
public const SERIALIZER_PHP = 1;
|
||||
public const OPT_SCAN = 4;
|
||||
public const SCAN_RETRY = 1;
|
||||
public const SCAN_NORETRY = 0;
|
||||
public const OPT_SLAVE_FAILOVER = 5;
|
||||
public const FAILOVER_NONE = 0;
|
||||
public const FAILOVER_ERROR = 1;
|
||||
public const FAILOVER_DISTRIBUTE = 2;
|
||||
public const FAILOVER_DISTRIBUTE_SLAVES = 3;
|
||||
public const AFTER = 'after';
|
||||
public const BEFORE = 'before';
|
||||
|
||||
// methods
|
||||
public function __construct() {}
|
||||
public function close() {}
|
||||
public function get() {}
|
||||
public function set() {}
|
||||
public function mget() {}
|
||||
public function mset() {}
|
||||
public function msetnx() {}
|
||||
public function del() {}
|
||||
public function setex() {}
|
||||
public function psetex() {}
|
||||
public function setnx() {}
|
||||
public function getset() {}
|
||||
public function exists() {}
|
||||
public function keys() {}
|
||||
public function type() {}
|
||||
public function lpop() {}
|
||||
public function rpop() {}
|
||||
public function lset() {}
|
||||
public function spop() {}
|
||||
public function lpush() {}
|
||||
public function rpush() {}
|
||||
public function blpop() {}
|
||||
public function brpop() {}
|
||||
public function rpushx() {}
|
||||
public function lpushx() {}
|
||||
public function linsert() {}
|
||||
public function lindex() {}
|
||||
public function lrem() {}
|
||||
public function brpoplpush() {}
|
||||
public function rpoplpush() {}
|
||||
public function llen() {}
|
||||
public function scard() {}
|
||||
public function smembers() {}
|
||||
public function sismember() {}
|
||||
public function sadd() {}
|
||||
public function saddarray() {}
|
||||
public function srem() {}
|
||||
public function sunion() {}
|
||||
public function sunionstore() {}
|
||||
public function sinter() {}
|
||||
public function sinterstore() {}
|
||||
public function sdiff() {}
|
||||
public function sdiffstore() {}
|
||||
public function srandmember() {}
|
||||
public function strlen() {}
|
||||
public function persist() {}
|
||||
public function ttl() {}
|
||||
public function pttl() {}
|
||||
public function zcard() {}
|
||||
public function zcount() {}
|
||||
public function zremrangebyscore() {}
|
||||
public function zscore() {}
|
||||
public function zadd() {}
|
||||
public function zincrby() {}
|
||||
public function hlen() {}
|
||||
public function hkeys() {}
|
||||
public function hvals() {}
|
||||
public function hget() {}
|
||||
public function hgetall() {}
|
||||
public function hexists() {}
|
||||
public function hincrby() {}
|
||||
public function hset() {}
|
||||
public function hsetnx() {}
|
||||
public function hmget() {}
|
||||
public function hmset() {}
|
||||
public function hdel() {}
|
||||
public function hincrbyfloat() {}
|
||||
public function hstrlen() {}
|
||||
public function dump() {}
|
||||
public function zrank() {}
|
||||
public function zrevrank() {}
|
||||
public function incr() {}
|
||||
public function decr() {}
|
||||
public function incrby() {}
|
||||
public function decrby() {}
|
||||
public function incrbyfloat() {}
|
||||
public function expire() {}
|
||||
public function pexpire() {}
|
||||
public function expireat() {}
|
||||
public function pexpireat() {}
|
||||
public function append() {}
|
||||
public function getbit() {}
|
||||
public function setbit() {}
|
||||
public function bitop() {}
|
||||
public function bitpos() {}
|
||||
public function bitcount() {}
|
||||
public function lget() {}
|
||||
public function getrange() {}
|
||||
public function ltrim() {}
|
||||
public function lrange() {}
|
||||
public function zremrangebyrank() {}
|
||||
public function publish() {}
|
||||
public function rename() {}
|
||||
public function renamenx() {}
|
||||
public function pfcount() {}
|
||||
public function pfadd() {}
|
||||
public function pfmerge() {}
|
||||
public function setrange() {}
|
||||
public function restore() {}
|
||||
public function smove() {}
|
||||
public function zrange() {}
|
||||
public function zrevrange() {}
|
||||
public function zrangebyscore() {}
|
||||
public function zrevrangebyscore() {}
|
||||
public function zrangebylex() {}
|
||||
public function zrevrangebylex() {}
|
||||
public function zlexcount() {}
|
||||
public function zremrangebylex() {}
|
||||
public function zunionstore() {}
|
||||
public function zinterstore() {}
|
||||
public function zrem() {}
|
||||
public function sort() {}
|
||||
public function object() {}
|
||||
public function subscribe() {}
|
||||
public function psubscribe() {}
|
||||
public function unsubscribe() {}
|
||||
public function punsubscribe() {}
|
||||
public function eval() {}
|
||||
public function evalsha() {}
|
||||
public function scan(&$i_iterator, $str_node, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function sscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function zscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function hscan($str_key, &$i_iterator, $str_pattern = NULL, $i_count = NULL) {}
|
||||
public function getmode() {}
|
||||
public function getlasterror() {}
|
||||
public function clearlasterror() {}
|
||||
public function getoption() {}
|
||||
public function setoption() {}
|
||||
public function _prefix() {}
|
||||
public function _serialize() {}
|
||||
public function _unserialize() {}
|
||||
public function _masters() {}
|
||||
public function _redir() {}
|
||||
public function multi() {}
|
||||
public function exec() {}
|
||||
public function discard() {}
|
||||
public function watch() {}
|
||||
public function unwatch() {}
|
||||
public function save() {}
|
||||
public function bgsave() {}
|
||||
public function flushdb() {}
|
||||
public function flushall() {}
|
||||
public function dbsize() {}
|
||||
public function bgrewriteaof() {}
|
||||
public function lastsave() {}
|
||||
public function info() {}
|
||||
public function role() {}
|
||||
public function time() {}
|
||||
public function randomkey() {}
|
||||
public function ping() {}
|
||||
public function echo() {}
|
||||
public function command() {}
|
||||
public function rawcommand() {}
|
||||
public function cluster() {}
|
||||
public function client() {}
|
||||
public function config() {}
|
||||
public function pubsub() {}
|
||||
public function script() {}
|
||||
public function slowlog() {}
|
||||
public function geoadd() {}
|
||||
public function geohash() {}
|
||||
public function geopos() {}
|
||||
public function geodist() {}
|
||||
public function georadius() {}
|
||||
public function georadiusbymember() {}
|
||||
}
|
||||
|
||||
class RedisClusterException extends \Exception {
|
||||
|
||||
// properties
|
||||
public $message;
|
||||
public $code;
|
||||
public $file;
|
||||
public $line;
|
||||
}
|
||||
|
||||
class RedisException extends \Exception {
|
||||
|
||||
// properties
|
||||
public $message;
|
||||
public $code;
|
||||
public $file;
|
||||
public $line;
|
||||
}
|
||||
|
||||
}
|
|
@ -61,6 +61,7 @@ function clean_checkout(string $dir)
|
|||
system('find . -name .github | xargs rm -rf -');
|
||||
system('find . -name .gitignore | xargs rm -rf -');
|
||||
system('find . -name .gitmodules | xargs rm -rf -');
|
||||
system('find . -name .phan | xargs rm -rf -');
|
||||
system('find . -name .php-cs-fixer.dist.php | xargs rm -rf -');
|
||||
system('find . -name .scrutinizer.yml | xargs rm -rf -');
|
||||
system('find . -name .travis.yml | xargs rm -rf -');
|
||||
|
@ -386,6 +387,7 @@ $doNotPackage = array(
|
|||
'.editorconfig',
|
||||
'.github',
|
||||
'.gitignore',
|
||||
'.phan',
|
||||
'.php-cs-fixer.dist.php',
|
||||
'acceptance.suite.yml',
|
||||
// Media Manager Node Assets
|
||||
|
|
|
@ -114,7 +114,8 @@
|
|||
"codeception/module-rest": "^1.0",
|
||||
"codeception/module-webdriver": "^1.0",
|
||||
"codeception/module-phpbrowser": "^1.0",
|
||||
"hoa/console": "^3.17"
|
||||
"hoa/console": "^3.17",
|
||||
"phan/phan": "^5.4"
|
||||
},
|
||||
"replace": {
|
||||
"paragonie/random_compat": "9.99.99"
|
||||
|
|
|
@ -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": "d9aeb137af8ceaf60f9d57ed6bf4f2fb",
|
||||
"content-hash": "c61095e68a47e91539f9638afe58d7e0",
|
||||
"packages": [
|
||||
{
|
||||
"name": "algo26-matthias/idna-convert",
|
||||
|
@ -7753,6 +7753,51 @@
|
|||
],
|
||||
"time": "2022-02-28T11:07:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "felixfbecker/advanced-json-rpc",
|
||||
"version": "v3.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
|
||||
"reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
|
||||
"reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
|
||||
"php": "^7.1 || ^8.0",
|
||||
"phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.0 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"AdvancedJsonRpc\\": "lib/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"ISC"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Felix Becker",
|
||||
"email": "felix.b@outlook.com"
|
||||
}
|
||||
],
|
||||
"description": "A more advanced JSONRPC implementation",
|
||||
"support": {
|
||||
"issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
|
||||
"source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
|
||||
},
|
||||
"time": "2021-06-11T22:34:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v3.4.0",
|
||||
|
@ -9062,6 +9107,51 @@
|
|||
},
|
||||
"time": "2022-04-13T08:02:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "microsoft/tolerant-php-parser",
|
||||
"version": "v0.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.15"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Microsoft\\PhpParser\\": [
|
||||
"src/"
|
||||
]
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Rob Lourens",
|
||||
"email": "roblou@microsoft.com"
|
||||
}
|
||||
],
|
||||
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
||||
"support": {
|
||||
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
||||
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
|
||||
},
|
||||
"time": "2021-07-16T21:28:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "myclabs/deep-copy",
|
||||
"version": "1.11.0",
|
||||
|
@ -9121,6 +9211,136 @@
|
|||
],
|
||||
"time": "2022-03-03T13:19:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "netresearch/jsonmapper",
|
||||
"version": "v4.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/cweiske/jsonmapper.git",
|
||||
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
|
||||
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"ext-pcre": "*",
|
||||
"ext-reflection": "*",
|
||||
"ext-spl": "*",
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
|
||||
"squizlabs/php_codesniffer": "~3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"JsonMapper": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"OSL-3.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Weiske",
|
||||
"email": "cweiske@cweiske.de",
|
||||
"homepage": "http://github.com/cweiske/jsonmapper/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Map nested JSON structures onto PHP classes",
|
||||
"support": {
|
||||
"email": "cweiske@cweiske.de",
|
||||
"issues": "https://github.com/cweiske/jsonmapper/issues",
|
||||
"source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
|
||||
},
|
||||
"time": "2020-12-01T19:48:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phan/phan",
|
||||
"version": "5.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phan/phan.git",
|
||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phan/phan/zipball/fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer/semver": "^1.4|^2.0|^3.0",
|
||||
"composer/xdebug-handler": "^2.0|^3.0",
|
||||
"ext-filter": "*",
|
||||
"ext-json": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
||||
"microsoft/tolerant-php-parser": "0.1.1",
|
||||
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
||||
"php": "^7.2.0|^8.0.0",
|
||||
"sabre/event": "^5.1.3",
|
||||
"symfony/console": "^3.2|^4.0|^5.0|^6.0",
|
||||
"symfony/polyfill-mbstring": "^1.11.0",
|
||||
"symfony/polyfill-php80": "^1.20.0",
|
||||
"tysonandre/var_representation_polyfill": "^0.0.2|^0.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ast": "Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.16+ is recommended.",
|
||||
"ext-iconv": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
|
||||
"ext-igbinary": "Improves performance of polyfill when ext-ast is unavailable",
|
||||
"ext-mbstring": "Either iconv or mbstring is needed to ensure issue messages are valid utf-8",
|
||||
"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"
|
||||
},
|
||||
"bin": [
|
||||
"phan",
|
||||
"phan_client",
|
||||
"tocheckstyle"
|
||||
],
|
||||
"type": "project",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Phan\\": "src/Phan"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tyson Andre"
|
||||
},
|
||||
{
|
||||
"name": "Rasmus Lerdorf"
|
||||
},
|
||||
{
|
||||
"name": "Andrew S. Morrison"
|
||||
}
|
||||
],
|
||||
"description": "A static analyzer for PHP",
|
||||
"keywords": [
|
||||
"analyzer",
|
||||
"php",
|
||||
"static"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phan/phan/issues",
|
||||
"source": "https://github.com/phan/phan/tree/5.4.1"
|
||||
},
|
||||
"time": "2022-08-26T00:49:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phar-io/manifest",
|
||||
"version": "2.0.3",
|
||||
|
@ -9350,6 +9570,166 @@
|
|||
},
|
||||
"time": "2022-05-03T12:16:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "2.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-2.x": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jaap van Otterdijk",
|
||||
"email": "opensource@ijaap.nl"
|
||||
}
|
||||
],
|
||||
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
||||
"homepage": "http://www.phpdoc.org",
|
||||
"keywords": [
|
||||
"FQSEN",
|
||||
"phpDocumentor",
|
||||
"phpdoc",
|
||||
"reflection",
|
||||
"static analysis"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
||||
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
|
||||
},
|
||||
"time": "2020-06-27T09:03:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-docblock",
|
||||
"version": "5.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-filter": "*",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpdocumentor/reflection-common": "^2.2",
|
||||
"phpdocumentor/type-resolver": "^1.3",
|
||||
"webmozart/assert": "^1.9.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~1.3.2",
|
||||
"psalm/phar": "^4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike van Riel",
|
||||
"email": "me@mikevanriel.com"
|
||||
},
|
||||
{
|
||||
"name": "Jaap van Otterdijk",
|
||||
"email": "account@ijaap.nl"
|
||||
}
|
||||
],
|
||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
|
||||
},
|
||||
"time": "2021-10-19T17:43:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "1.6.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "77a32518733312af16a44300404e945338981de3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
||||
"reference": "77a32518733312af16a44300404e945338981de3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpdocumentor/reflection-common": "^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-tokenizer": "*",
|
||||
"psalm/phar": "^4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-1.x": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike van Riel",
|
||||
"email": "me@mikevanriel.com"
|
||||
}
|
||||
],
|
||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
||||
},
|
||||
"time": "2022-03-15T21:29:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
"version": "7.0.15",
|
||||
|
@ -9887,6 +10267,72 @@
|
|||
},
|
||||
"time": "2019-03-08T08:55:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sabre/event",
|
||||
"version": "5.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sabre-io/event.git",
|
||||
"reference": "d7da22897125d34d7eddf7977758191c06a74497"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sabre-io/event/zipball/d7da22897125d34d7eddf7977758191c06a74497",
|
||||
"reference": "d7da22897125d34d7eddf7977758191c06a74497",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "~2.17.1",
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"lib/coroutine.php",
|
||||
"lib/Loop/functions.php",
|
||||
"lib/Promise/functions.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Sabre\\Event\\": "lib/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Evert Pot",
|
||||
"email": "me@evertpot.com",
|
||||
"homepage": "http://evertpot.com/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "sabre/event is a library for lightweight event-based programming",
|
||||
"homepage": "http://sabre.io/event/",
|
||||
"keywords": [
|
||||
"EventEmitter",
|
||||
"async",
|
||||
"coroutine",
|
||||
"eventloop",
|
||||
"events",
|
||||
"hooks",
|
||||
"plugin",
|
||||
"promise",
|
||||
"reactor",
|
||||
"signal"
|
||||
],
|
||||
"support": {
|
||||
"forum": "https://groups.google.com/group/sabredav-discuss",
|
||||
"issues": "https://github.com/sabre-io/event/issues",
|
||||
"source": "https://github.com/fruux/sabre-event"
|
||||
},
|
||||
"time": "2021-11-04T06:51:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/code-unit-reverse-lookup",
|
||||
"version": "1.0.2",
|
||||
|
@ -11497,6 +11943,68 @@
|
|||
}
|
||||
],
|
||||
"time": "2021-07-28T10:34:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tysonandre/var_representation_polyfill",
|
||||
"version": "0.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/TysonAndre/var_representation_polyfill.git",
|
||||
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e9116c2c352bb0835ca428b442dde7767c11ad32",
|
||||
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-tokenizer": "*",
|
||||
"php": "^7.2.0|^8.0.0"
|
||||
},
|
||||
"provide": {
|
||||
"ext-var_representation": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phan/phan": "^5.4.1",
|
||||
"phpunit/phpunit": "^8.5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-var_representation": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "0.1.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/var_representation.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"VarRepresentation\\": "src/VarRepresentation"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tyson Andre"
|
||||
}
|
||||
],
|
||||
"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.1.3"
|
||||
},
|
||||
"time": "2022-08-31T12:59:22+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
|
|
Loading…
Reference in New Issue