diff --git a/.gitattributes b/.gitattributes
index 70b009d9..cbf8ec65 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,9 +2,10 @@
/.gitattributes export-ignore
/.github/ export-ignore
/.gitignore export-ignore
-/.travis.yml export-ignore
/docs/ export-ignore
/mkdocs.yml export-ignore
/phpcs.xml export-ignore
/phpunit.xml.dist export-ignore
+/psalm.xml export-ignore
+/psalm-baseline.xml export-ignore
/test/ export-ignore
diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml
new file mode 100644
index 00000000..8356e723
--- /dev/null
+++ b/.github/workflows/psalm.yml
@@ -0,0 +1,56 @@
+name: "Static Analysis by Psalm"
+
+on:
+ pull_request:
+ push:
+
+jobs:
+ static-analysis-psalm:
+ name: "Static Analysis by Psalm"
+
+ runs-on: ${{ matrix.operating-system }}
+
+ strategy:
+ matrix:
+ dependencies:
+ - "locked"
+ php-version:
+ - "7.4"
+ operating-system:
+ - "ubuntu-latest"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ coverage: "pcov"
+ php-version: "${{ matrix.php-version }}"
+ ini-values: memory_limit=-1
+ tools: composer:v2, cs2pr
+
+ - name: "Cache dependencies"
+ uses: "actions/cache@v2"
+ with:
+ path: |
+ ~/.composer/cache
+ vendor
+ key: "php-${{ matrix.php-version }}-${{ matrix.dependencies }}"
+ restore-keys: "php-${{ matrix.php-version }}-${{ matrix.dependencies }}"
+
+ - name: "Install lowest dependencies"
+ if: ${{ matrix.dependencies == 'lowest' }}
+ run: "composer update --prefer-lowest --no-interaction --no-progress --no-suggest"
+
+ - name: "Install highest dependencies"
+ if: ${{ matrix.dependencies == 'highest' }}
+ run: "composer update --no-interaction --no-progress --no-suggest"
+
+ - name: "Install locked dependencies"
+ if: ${{ matrix.dependencies == 'locked' }}
+ run: "composer install --no-interaction --no-progress --no-suggest"
+
+ - name: "psalm"
+ run: "vendor/bin/psalm --output-format=github --shepherd --stats"
diff --git a/composer.json b/composer.json
index 3f857db8..a68829f6 100644
--- a/composer.json
+++ b/composer.json
@@ -28,7 +28,9 @@
"doctrine/annotations": "^1.10.4",
"laminas/laminas-coding-standard": "^1.0.0",
"laminas/laminas-stdlib": "^3.3.0",
- "phpunit/phpunit": "^9.4.2"
+ "phpunit/phpunit": "^9.4.2",
+ "psalm/plugin-phpunit": "^0.13.0",
+ "vimeo/psalm": "^4.2"
},
"conflict": {
"phpspec/prophecy": "<1.9.0"
@@ -56,7 +58,8 @@
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
- "test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
+ "test-coverage": "phpunit --colors=always --coverage-clover clover.xml",
+ "static-analysis": "psalm --shepherd --stats"
},
"replace": {
"zendframework/zend-code": "self.version"
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
new file mode 100644
index 00000000..c7ef18af
--- /dev/null
+++ b/psalm-baseline.xml
@@ -0,0 +1,4439 @@
+
+
+
+
+ $value
+
+
+ $directive
+
+
+ $this->value
+ $value
+
+
+ self
+
+
+ self::{$method}($value)
+
+
+
+
+ ! is_array($options) && ! $options instanceof Traversable
+
+
+ $this->indentation
+
+
+ string
+
+
+ $optionName
+ $optionValue
+
+
+ $optionName
+
+
+ $sourceContent
+
+
+
+
+ $docBlock instanceof DocBlockGenerator
+
+
+ $flag
+ $this->flags
+
+
+ $flag
+
+
+
+
+ $content
+ BodyGenerator
+
+
+
+
+ ! is_string($name)
+ is_string($name)
+ is_string($name)
+
+
+ [$this, 'validateConstantValue']
+
+
+ string
+
+
+ $this->flags
+ $this->flags
+ $this->flags
+ $this->flags
+
+
+ 0x00
+
+
+ $this->flags & self::FLAG_FINAL
+
+
+ bool
+
+
+ $this->flags & ~$flag
+ $this->flags | $flag
+ self::FLAG_ABSTRACT
+ self::FLAG_ABSTRACT
+ self::FLAG_FINAL
+ self::FLAG_FINAL
+
+
+ addTraitAlias
+ addTraitOverride
+ generate
+ removeTrait
+
+
+ $array['name']
+ $implemented
+ $implementedInterface
+ $this->traitUsageGenerator->generate()
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ array_values($constant)
+ array_values($method)
+ array_values($property)
+
+
+ $name
+
+
+ $flag
+ $method
+ $property
+ $this->flags
+ $use
+ $value
+ $value
+
+
+ $flag
+ $use
+ static::IMPLEMENTS_KEYWORD
+ static::OBJECT_TYPE
+
+
+ null
+
+
+ $this->traitUsageGenerator->getUseAlias($fqnClassName)
+
+
+ $classReflection->getDocBlock()
+ strrpos($name, '\\')
+
+
+ strrpos($name, '\\')
+
+
+ getInterfaces
+ getName
+
+
+ $namespaceAlias
+
+
+ $containingFileGenerator
+ $docBlock
+ $extendedClass
+ $name
+ $namespaceName
+ ClassGenerator
+
+
+ is_array($constant)
+ is_array($interfaces)
+ null !== ($docBlock = $this->getDocBlock())
+ null !== ($namespace = $this->getNamespaceName())
+
+
+ new static($array['name'])
+ new static($classReflection->getName())
+
+
+
+
+ $tagManager->createTagFromReflection($reflectionTag)
+ $this->setContent($description)
+
+
+ Tag
+ Tag
+
+
+ Tag
+ Tag
+ Tag
+
+
+
+
+ $description
+ AbstractTypeableTag
+
+
+
+
+ $tagManager->createTagFromReflection($reflectionTag)
+
+
+ AuthorTag
+
+
+ $authorEmail
+ $authorName
+ AuthorTag
+
+
+
+
+ $content
+ $name
+ GenericTag
+
+
+
+
+ $tagManager->createTagFromReflection($reflectionTag)
+
+
+ ReturnTag
+
+
+ $licenseName
+ $url
+ LicenseTag
+
+
+
+
+ $types
+
+
+ $methodName
+ MethodTag
+ MethodTag
+
+
+
+
+ $tagManager->createTagFromReflection($reflectionTag)
+ $this->setTypes($datatype)
+
+
+ $types
+
+
+ ParamTag
+ ParamTag
+
+
+ $variableName
+ ParamTag
+ ParamTag
+
+
+
+
+ $types
+
+
+ $propertyName
+ PropertyTag
+ PropertyTag
+
+
+
+
+ $tagManager->createTagFromReflection($reflectionTag)
+ $this->setTypes($datatype)
+
+
+ ReturnTag
+ ReturnTag
+
+
+ ReturnTag
+ ReturnTag
+
+
+
+
+ ThrowsTag
+ ThrowsTag
+
+
+
+
+ VarTag
+ VarTag
+
+
+
+
+ $newTag
+
+
+ TagInterface
+
+
+ TagManager
+
+
+
+
+ new Tag()
+
+
+ $tag instanceof TagInterface
+ isset(static::$tagManager)
+
+
+ $tag
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $tag
+ $value
+
+
+ $this->tags
+ TagInterface[]
+
+
+ $longDescription
+ $shortDescription
+ DocBlockGenerator
+
+
+ is_array($tags)
+
+
+ null !== ($ld = $this->getLongDescription())
+ null !== ($sd = $this->getShortDescription())
+
+
+ generate
+
+
+ new static()
+ new static()
+
+
+
+
+ $class instanceof ClassGenerator
+ $docBlock instanceof DocBlockGenerator
+
+
+ $docBlock
+
+
+ $value
+
+
+ setDeclares
+
+
+ $alias
+ $alias
+ $class
+ $class->generate()
+ $fileUse['as']
+ $fileUse['use']
+ $import
+ $import
+ $import
+ $uses[$useIndex][0]
+ $uses[$useIndex][0]
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+ $name
+
+
+ $alias
+ $fileUse['as']
+ $fileUse['use']
+ $import
+ $uses[$useIndex][0]
+ $uses[$useIndex][0]
+ $uses[$useIndex][0]
+ $uses[$useIndex][1]
+
+
+ $uses[$useIndex][2]
+ $uses[$useIndex][2]
+ $uses[$useIndex][2]
+
+
+ $alias
+ $class
+ $class
+ $class
+ $fileUse
+ $import
+ $import
+ $requiredFile
+ $use
+ $use
+ $uses[$useIndex][2]
+ $uses[$useIndex][2]
+ $value
+ list($import, $alias)
+
+
+ ClassGenerator
+
+
+ isSourceDirty
+
+
+ $class->generate()
+ $requiredFile
+
+
+ $class
+ $this->classes[(string)$name]
+
+
+ $this->classes
+ ClassGenerator[]
+
+
+ null
+
+
+ $docBlock
+
+
+ $namespace
+
+
+ $body
+ $docBlock
+ $filename
+ $namespace
+ FileGenerator
+
+
+ ! empty($uses) && is_array($uses)
+ $docBlock
+ is_array($uses)
+ null !== ($docBlock = $this->getDocBlock())
+
+
+ new static()
+ new static()
+
+
+
+
+ registerFileCodeGenerator
+
+
+
+
+ generate
+
+
+
+
+ $extendedClass
+
+
+ $array['name']
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $value
+ $value
+
+
+ $classReflection->getDocBlock()
+
+
+ InterfaceGenerator
+ InterfaceGenerator
+ InterfaceGenerator
+ InterfaceGenerator
+ InterfaceGenerator
+ InterfaceGenerator
+
+
+ new static($array['name'])
+ new static($classReflection->getName())
+
+
+
+
+ $parameter instanceof ParameterGenerator
+
+
+ $array['name']
+ $parameter
+ $parameterOutput
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $parameterOutput[]
+
+
+ $parameter
+ $value
+
+
+ $this->returnType->generate()
+
+
+ $reflectionMethod->getDocBlock()
+
+
+ $parameterOutput
+
+
+ $body
+ $docBlock
+ MethodGenerator
+ MethodGenerator
+
+
+ method_exists($methodReflection, 'getReturnType')
+
+
+ new static($array['name'])
+ new static()
+
+
+
+
+ string
+
+
+ $array['name']
+ $defaultValue
+ $reflectionParameter->getDefaultValue()
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $value
+
+
+ $this->type->generate()
+
+
+
+ getName
+ getParentClass
+
+
+ $defaultValue
+ $name
+ $position
+ ParameterGenerator
+
+
+ method_exists($reflectionParameter, 'getType')
+ method_exists($reflectionParameter, 'isVariadic')
+
+
+ $this->defaultValue instanceof ValueGenerator
+
+
+ new static($array['name'])
+
+
+
+
+ 'null;'
+ 'null;'
+
+
+ $array['name']
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $defaultValue
+ $value
+
+
+ $reflectionProperty->getDocBlock()
+
+
+ $defaultValue
+ $isConst
+ PropertyGenerator
+ PropertyGenerator
+
+
+ $defaultValue !== null
+ $defaultValue !== null
+ $defaultValue !== null
+
+
+ new static($array['name'])
+ new static()
+
+
+
+
+ PropertyValueGenerator
+ PropertyValueGenerator
+
+
+
+
+ $array['name']
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $name
+
+
+ $value
+
+
+ $classReflection->getDocBlock()
+
+
+ TraitGenerator
+ TraitGenerator
+ TraitGenerator
+ TraitGenerator
+ TraitGenerator
+ TraitGenerator
+
+
+ new static($array['name'])
+ new static($classReflection->getName())
+
+
+
+
+ is_string($alias)
+
+
+ addTraitAlias
+ addTraitOverride
+ generate
+ removeTrait
+
+
+ $alias['alias']
+ $alias['alias']
+ $alias['visibility']
+ $method
+ $this->traitOverrides[$method]
+ $this->traitOverrides[$traitAndMethod]
+ $traitAndMethod
+ $traitAndMethod
+ $traitAndMethod
+ $traitAndMethod
+ $traitAndMethod
+ $traitName
+ $value
+ $value
+ $value
+ $value
+
+
+ $key
+ $key
+
+
+ $alias['alias']
+ $alias['alias']
+ $alias['alias']
+ $alias['visibility']
+ $alias['visibility']
+ $this->traitOverrides[$method][$key]
+
+
+ $this->traitOverrides[$traitAndMethod][]
+
+
+ $this->traitAliases[$traitAndMethod]
+ $this->traitOverrides[$method][$key]
+ $this->traitOverrides[$traitAndMethod]
+ $this->traitOverrides[$traitAndMethod]
+ $this->traitOverrides[$traitAndMethod]
+ $this->uses[$value]
+ $this->uses[$value]
+
+
+ $this->traitOverrides[$traitAndMethod]
+
+
+ $alias
+ $alias
+ $insteadof
+ $insteadofTrait
+ $insteadofTraits
+ $key
+ $trait
+ $traitAndMethod
+ $traitAndMethod
+ $traitName
+ $traitName
+ $traitToRemove
+ $value
+ $value
+ $value
+ $value
+ $value
+ $value
+
+
+ $alias['alias']
+ $insteadofTrait
+ $method['method']
+ $method['traitName']
+ current(Reflection::getModifierNames($alias['visibility']))
+
+
+ TraitUsageGenerator
+
+
+ addTraitOverride
+
+
+ addAlias
+
+
+
+
+ addTraitAlias
+ addTraitOverride
+ removeTrait
+
+
+
+
+ $trimmedNullable
+ $trimmedType
+ $trimmedType
+ $trimmedType
+
+
+ generate
+
+
+ $this->generate()
+
+
+ $nullable
+ $trimmedType
+
+
+ $isInternalPhpType
+ $nullable
+ $type
+
+
+
+
+ $constants instanceof SplArrayObject || $constants instanceof StdlibArrayObject
+ $constants instanceof StdlibArrayObject
+
+
+ $this->indentation
+ $this->indentation
+ $this->indentation
+ $this->indentation
+
+
+ initEnvironmentConstants
+
+
+ $n
+ $value
+
+
+ $constant
+ $curValue
+ $n
+ $outputParts[]
+ $partV
+ $v
+ $value
+
+
+ generate
+ setArrayDepth
+
+
+ $partV
+ $value
+
+
+ $allowedTypes
+ ValueGenerator
+
+
+ 'float'
+
+
+
+
+ ! $this->hasPrototype($prototypeName) && ! isset($this->genericPrototype)
+
+
+ addPrototype
+ setGenericPrototype
+
+
+ $newPrototype
+
+
+ clone $this->prototypes[$prototypeName]
+
+
+ PrototypeInterface
+
+
+ $newPrototype
+
+
+ $genericPrototype
+
+
+
+
+ setName
+
+
+
+
+ addUse
+
+
+ $as
+ $as
+ $use
+
+
+ $as
+ $as
+ $use
+
+
+ $use
+
+
+ $namespace
+
+
+ is_string($use)
+
+
+ $this->namespace !== null
+ $this->uses
+
+
+
+
+ parent::getStartLine()
+ strstr(implode('', $lines), '{')
+
+
+ ClassReflection|bool
+
+
+ int
+ string
+
+
+ Exception\ExceptionInterface
+
+
+ ClassReflection[]
+ MethodReflection[]
+ PropertyReflection[]
+ null|array
+
+
+ $docBlock
+ $docBlock
+
+
+ getStartLine
+
+
+ $traits === null
+
+
+
+
+ $authorEmail
+ $authorName
+
+
+
+
+ parse
+ setName
+
+
+ string
+
+
+ $this->values[$position]
+
+
+ $this->contentSplitCharacter
+
+
+ $content
+ $name
+
+
+
+
+ $licenseName
+ $url
+
+
+
+
+ $description
+ $methodName
+
+
+ null|string
+
+
+ $this->types[0]
+
+
+ $this->types
+ getTypes
+
+
+
+
+ $description
+ $variableName
+
+
+ string
+
+
+ $this->types[0]
+
+
+ $this->types
+ getTypes
+
+
+
+
+ $description
+ $propertyName
+
+
+ null|string
+
+
+ $this->types[0]
+
+
+ $this->types
+ getTypes
+
+
+
+
+ $description
+
+
+ string
+
+
+ $this->types[0]
+
+
+ $this->types
+ getTypes
+
+
+
+
+ array
+
+
+ $description
+
+
+
+
+ $newTag
+
+
+ TagInterface
+
+
+ TagManager
+
+
+ initialize
+
+
+
+
+ ! is_string($filter)
+
+
+ $tag['name']
+ $tag['value']
+ $this->docComment
+ $this->docComment
+
+
+ $tag['name']
+ $tag['value']
+
+
+ $returnTags[]
+ $tag
+ $tag
+ $tag
+ $tag
+ $tag
+ $this->docComment
+ $this->endLine
+ $this->startLine
+
+
+ DocBlockTagInterface|false
+
+
+ getName
+ getName
+ getName
+
+
+ $tag
+
+
+ $tag
+
+
+ $returnTags
+ $this->tags
+ DocBlockTagInterface[]
+
+
+ $endLine
+ $reflector
+ $startLine
+
+
+ is_string($commentOrReflector)
+
+
+ getStartLine
+ getStartLine
+
+
+
+
+ $name
+
+
+ $function
+
+
+ $value
+
+
+ $token[0]
+ $token[1]
+ $token[2]
+
+
+ $lineNum
+ $this->docComment
+ $this->startLine
+ $token
+ $type
+ $value
+
+
+ $lineNum
+
+
+ $scanner->getClassNames()
+ $scanner->getIncludes()
+ $scanner->getNamespaces()
+ $scanner->getUses()
+
+
+ $scanner->getDocComment()
+
+
+ $contents
+ $endLine
+
+
+ include $fileRealPath
+
+
+
+
+ ParameterReflection[]
+
+
+ $returnTypes
+ $returnTypes
+
+
+ $returnTypes[0]
+
+
+ $returnType
+ $returnTypes
+
+
+ $prototype['return']
+
+
+ strrpos($this->getName(), '\\')
+ strrpos($this->getName(), '\\')
+
+
+ getDescription
+ getTypes
+
+
+ $endLine
+ $endLine
+ $startLine
+ $startLine
+ $startLine
+ $startLine
+
+
+ $docBlock
+
+
+ getDescription
+ getTypes
+
+
+
+
+ bool
+
+
+ ParameterReflection[]
+
+
+ $haystack[$i][0]
+ $haystack[$i][0]
+ $haystack[$i][0]
+ $returnTypes
+ $returnTypes
+
+
+ $returnTypes[0]
+
+
+ $returnType
+ $returnTypes
+ $tokenType
+ $tokenType
+ $tokenType
+ $tokenValue
+ $tokenValue
+
+
+ $prototype['return']
+ $tokenValue
+
+
+ getStartLine
+ getTypes
+
+
+ getTypes
+
+
+
+
+ $phpReflection->getName()
+ $phpReflectionType->getName()
+
+
+ string|null
+
+
+ getName
+
+
+ $params[$this->getPosition()]->getType()
+
+
+ getName
+
+
+ $type
+
+
+ getType
+
+
+
+
+ $returnDerivedScannerClass
+ $returnScannerClass
+
+
+ getFunctions
+ getIncludes
+ getNamespaces
+
+
+ $class
+ $classScanner
+ $returnDerivedScannerClass
+
+
+ $info['name']
+ $info['type']
+
+
+ $class
+ $classScanner
+ $functions[]
+ $info
+
+
+ getClass
+
+
+ $returnScannerClass
+ $returnScannerClass
+
+
+ getClasses
+ hasClass
+ hasClass
+
+
+ AggregateDirectoryScanner
+
+
+ $this->infos
+
+
+
+
+ $this->fileScanner->getClass($className)
+
+
+ array
+ array|null|string
+
+
+ ClassScanner
+
+
+ array
+
+
+ array
+
+
+ $this->fileScanner
+
+
+ $this->fileScanner->getIncludes()
+
+
+ getClass
+ getClassNameInformation
+ getClassNames
+ getClasses
+ getDocComment
+ getFile
+ getFunctionNames
+ getFunctions
+ getIncludes
+ getNamespaces
+ getUses
+
+
+ CachingFileScanner
+ CachingFileScanner
+
+
+
+
+ $returnMethod
+
+
+ MethodScanner
+
+
+ $return
+ $this->traits
+
+
+ ClassScanner[]
+ PropertyScanner[]
+
+
+ $visibility
+
+
+ __toString
+
+
+ function () use (
+ function () use (&$infoIndex, &$infos, &$tokenIndex, &$tokenLine) {
+
+
+ export
+
+
+ $alias['alias']
+ $alias['original']
+ $alias['original']
+ $info['name']
+ $info['name']
+ $info['tokenEnd'] - $info['tokenStart'] + 1
+ $info['tokenEnd'] - $info['tokenStart'] + 1
+ $info['tokenEnd'] - $info['tokenStart'] + 1
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['tokenStart']
+ $lastTokenArray[1] ?? ''
+ $si
+ $tokenContent
+ $traitName
+ $traitName
+ $traitName
+ $traitName
+
+
+ $methodAlias
+
+
+ $alias['alias']
+ $alias['alias']
+ $alias['alias']
+ $alias['original']
+ $alias['original']
+ $alias['visibility']
+ $info['aliases']
+ $info['aliases']
+ $info['aliases']
+ $info['aliases']
+ $info['aliases']
+ $info['aliases']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['tokenEnd']
+ $info['tokenEnd']
+ $info['tokenEnd']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['use_statements']
+ $info['use_statements']
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $tokenContent
+ $tokenLine
+ $tokenType
+ $tokens[$tokenIndex + 1]
+ $tokens[$tokenIndex + 1]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+
+
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $return[$alias['alias']]
+ $tokens[$tokenIndex + 1]
+ $tokens[$tokenIndex + 1]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $alias
+ $alias
+ $alias
+ $classContext
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $infoIndex
+ $infos[$infoIndex]['aliases'][$useStatementIndex]['alias']
+ $infos[$infoIndex]['aliases'][$useStatementIndex]['visibility']
+ $infos[$infoIndex]['lineEnd']
+ $infos[$infoIndex]['name']
+ $infos[$infoIndex]['name']
+ $infos[$infoIndex]['tokenEnd']
+ $infos[$infoIndex]['tokenEnd']
+ $lastTokenArray
+ $methodNameOrInfoIndex
+ $return
+ $return[]
+ $return[]
+ $return[]
+ $si
+ $this->docComment
+ $this->lineEnd
+ $this->lineStart
+ $this->name
+ $this->name
+ $this->shortName
+ $this->shortName
+ $token
+ $tokenIndex
+ $trait
+ $traitName
+ $traitName
+ [$tokenType, $tokenContent, $tokenLine]
+
+
+ string
+
+
+ $infoIndex
+ $info['tokenEnd']
+ $info['tokenEnd']
+ $info['tokenEnd']
+ $infos[$infoIndex]['aliases'][$useStatementIndex]['original']
+ $infos[$infoIndex]['use_statements'][$useStatementIndex]
+ $this->shortInterfaces[$classInterfaceIndex]
+ $this->shortInterfaces[$classInterfaceIndex]
+ $this->shortName
+ $this->shortName
+ $tokenContent
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+ $tokenLine
+
+
+ $return
+
+
+ $this->methods
+ $this->traits
+ MethodScanner[]
+
+
+ $return
+
+
+ $infos[$infoIndex]['aliases'][$useStatementIndex]['original']
+
+
+ $trait->getName()
+
+
+ $nameInformation
+
+
+ $docComment
+ $lineEnd
+ $lineStart
+ $name
+ $parentClass
+ $shortName
+ $shortParentClass
+
+
+ $tokenType === T_STRING && null === $infos[$infoIndex]['name']
+ $tokenType === null && $tokenContent === '{' && $braceCount === 0
+ false === $useAliasContext
+
+
+ $this->nameInformation
+ $this->nameInformation
+ $this->nameInformation
+ $this->nameInformation instanceof NameInformation
+ $this->nameInformation instanceof NameInformation
+ $this->nameInformation instanceof NameInformation
+ $this->parentClass !== null
+ is_object($this->getMethod($name))
+ is_string($constantNameOrInfoIndex)
+ is_string($propertyNameOrInfoIndex)
+ null !== $visibility
+
+
+ $braceCount === 0
+ $memberContext !== null
+ $memberContext === 'method'
+ $memberContext === 'method'
+ $useAliasContext === true
+
+
+ T_NAME_FULLY_QUALIFIED
+ T_NAME_QUALIFIED
+
+
+
+
+ $this->docComment === null
+ $this->name === null
+ null === $this->name
+
+
+ $tokenContent
+ $tokenLine
+ $tokenNextContent
+ $tokenNextContent
+ $tokenNextLine
+ $tokenNextLine
+ $tokenNextType
+ $tokenNextType
+ $tokenType
+
+
+ list($tokenNextType, $tokenNextContent, $tokenNextLine)
+ list($tokenNextType, $tokenNextContent, $tokenNextLine)
+ list($tokenType, $tokenContent, $tokenLine)
+
+
+ scan
+ setClass
+ setScannerClass
+
+
+ $string
+ $string
+ $string
+ $string
+ $tokenNextContent
+ $tokenNextContent
+
+
+ $tokenContent
+ $tokenLine
+ $tokenNextContent
+ $tokenNextContent
+ $tokenNextLine
+ $tokenNextLine
+ $tokenNextType
+ $tokenNextType
+ $tokenType
+
+
+ $string
+ $string
+ $this->docComment
+ $this->name
+ $this->value
+ $token
+ list($tokenNextType, $tokenNextContent, $tokenNextLine)
+ list($tokenNextType, $tokenNextContent, $tokenNextLine)
+ list($tokenType, $tokenContent, $tokenLine)
+
+
+ is_string($token)
+ is_string($token)
+
+
+ getValue
+
+
+ $nameInformation
+
+
+ $class
+ $docComment
+ $lineStart
+ $name
+ $scannerClass
+ $value
+
+
+
+
+ $iName
+ $iName
+
+
+ $this->interfaceClassScanners
+
+
+ $constantNameOrInfoIndex
+ $methodNameOrInfoIndex
+ $propertyNameOrInfoIndex
+
+
+ array
+
+
+ $pClassScanner->getConstantNames()
+ $pClassScanner->getConstants($namesOnly)
+ $pClassScanner->getInterfaces()
+ $pClassScanner->getMethodNames()
+ $pClassScanner->getMethods()
+ $pClassScanner->getProperties($returnScannerProperty)
+ $pClassScanner->getPropertyNames()
+
+
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+ $pClassScanner
+
+
+ MethodScanner
+ bool|ConstantScanner
+ bool|PropertyScanner
+
+
+ getConstant
+ getConstantNames
+ getConstants
+ getInterfaces
+ getMethod
+ getMethodNames
+ getMethods
+ getProperties
+ getProperty
+ getPropertyNames
+ hasConstant
+ hasConstant
+ hasMethod
+ hasMethod
+ hasProperty
+ hasProperty
+
+
+ $pClassScanner->getConstant($constantNameOrInfoIndex)
+ $pClassScanner->getMethod($methodNameOrInfoIndex)
+ $pClassScanner->getProperty($propertyNameOrInfoIndex)
+
+
+ $methods
+ MethodScanner[]
+
+
+ $currentParentClassName
+ $currentParentClassName
+ $this->classScanner->getName()
+ $this->classScanner->getName()
+ $this->classScanner->getName()
+
+
+ $this->parentClassScanners
+
+
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+ DerivedClassScanner
+
+
+ getProperties
+
+
+
+
+ $this->classToFileScanner === null
+ $this->classToFileScanner === null
+ $this->classToFileScanner === null
+ $this->classToFileScanner === null
+
+
+ $returnClass
+
+
+ ClassScanner|DerivedClassScanner
+
+
+ __toString
+
+
+ export
+ getNamespaces
+
+
+ $d
+ $item->getRealPath()
+ $item->getRealPath()
+
+
+ $this->classToFileScanner[$fsClassName]
+ $this->fileScanners[$fsIndex]
+ $this->fileScanners[$this->classToFileScanner[$class]]
+
+
+ $d
+ $fsClassName
+ $fsIndex
+ $item
+
+
+ getRealPath
+ getRealPath
+ isFile
+
+
+ $classScanner
+
+
+ $classToFileScanner
+
+
+ $this->classToFileScanner !== null
+ is_array($directory)
+ is_string($directory)
+
+
+
+
+ $length
+ $positionsForward
+ $type
+
+
+ function ($length) use (&$currentWord, &$tokens, &$tokenIndex) {
+ function ($positionsForward = 1) use (
+ function ($type) use (&$tokenIndex, &$tokens) {
+ function () use (&$currentChar, &$tokens, &$tokenIndex) {
+ function () use (&$currentLine, &$MACRO_STREAM_ADVANCE_CHAR) {
+ function () use (&$currentLine, &$tokens, &$tokenIndex) {
+ function () use (&$currentWord, &$MACRO_STREAM_ADVANCE_CHAR) {
+ function () use (&$currentWord, &$tokens, &$tokenIndex) {
+ function () use (&$tokenIndex, &$tokens) {
+
+
+ $currentLine
+ $currentWord
+ $currentWord
+ $length
+ $stream
+ $stream
+ $streamIndex
+ $streamIndex
+ $tokens
+
+
+ $stream[$streamIndex]
+ $this->tags[$tagIndex]['value']
+ $this->tags[$tagIndex]['value']
+ $token[0]
+ $token[1]
+ $token[1]
+ $token[1]
+ $token[1]
+ $token[1]
+ $token[1]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $this->tags[$tagIndex]['value']
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $stream[$streamIndex]
+ $stream[$streamIndex]
+ $this->tags[$tagIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $currentChar
+ $positionsForward
+ $streamIndex
+ $token
+ $tokenIndex
+ $tokens[$tokenIndex][0]
+
+
+ $MACRO_STREAM_ADVANCE_CHAR()
+ $MACRO_STREAM_ADVANCE_CHAR()
+ $MACRO_STREAM_ADVANCE_CHAR()
+ $MACRO_STREAM_ADVANCE_CHAR(strlen($currentLine))
+ $MACRO_STREAM_ADVANCE_CHAR(strlen($currentWord))
+
+
+ array
+
+
+ $CONTEXT_INSIDE_ASTERISK
+ $CONTEXT_INSIDE_ASTERISK
+ $CONTEXT_INSIDE_ASTERISK
+ $CONTEXT_INSIDE_DOCBLOCK
+ $CONTEXT_INSIDE_DOCBLOCK
+ $CONTEXT_INSIDE_DOCBLOCK
+ $context
+ $streamIndex
+ $this->tags[$tagIndex]['value']
+ $tokenIndex
+ $token[1]
+ $token[1]
+ $token[1]
+ $token[1]
+ $tokens[$tokenIndex][1]
+ $tokens[$tokenIndex][1]
+ $tokens[$tokenIndex][1]
+ $tokens[$tokenIndex][1]
+ ~$CONTEXT_INSIDE_ASTERISK
+ ~$CONTEXT_INSIDE_DOCBLOCK
+
+
+ $tokens
+
+
+ null
+
+
+ $nameInformation
+
+
+ $shortDescription
+
+
+ $context === 0x00
+ $this->shortDescription != '' && $tagIndex === null
+
+
+ $tagIndex !== null
+
+
+
+
+ FileScanner
+
+
+
+
+ $this->docComment === null
+ $this->name === null
+
+
+ function () use (
+ function () use (&$infoIndex, &$infos, &$tokenIndex, &$tokenLine) {
+ function () use (&$infoIndex, &$infos, &$tokenIndex, &$tokenLine) {
+
+
+ export
+ scan
+
+
+ $info['name']
+ $info['position']
+ $info['tokenEnd'] - $info['tokenStart']
+ $info['tokenStart']
+ $lastTokenArray[1] ?? ''
+ $tokenContent
+
+
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['position']
+ $info['tokenEnd']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['type']
+ $info['type']
+ $info['type']
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $tokenContent
+ $tokenLine
+ $tokenType
+ $tokens[$tokenIndex]
+
+
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+
+
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $info
+ $info
+ $info
+ $infoIndex
+ $infos[$infoIndex]['lineEnd']
+ $infos[$infoIndex]['tokenEnd']
+ $lastTokenArray
+ $return[]
+ $this->docComment
+ $this->lineEnd
+ $this->lineStart
+ $this->name
+ $token
+ $tokenIndex
+ [$tokenType, $tokenContent, $tokenLine]
+
+
+ $infoIndex
+ $infoIndex
+ $info['tokenEnd']
+ $tokenContent
+ $tokenIndex
+ $tokenLine
+
+
+ $nameInformation
+ null
+
+
+ $info
+ $info
+ $info
+ $info
+
+
+ $class
+ $docComment
+ $lineEnd
+ $lineStart
+ $name
+ $scannerClass
+
+
+ $tokenType === T_STRING && $parentCount === 0
+
+
+ is_string($parameterNameOrInfoIndex)
+
+
+ $parentCount === 1
+ $parentCount === 1
+
+
+ T_NAME_FULLY_QUALIFIED
+ T_NAME_QUALIFIED
+
+
+
+
+ ClassScanner
+ MethodScanner
+ int
+ string
+ string
+ string
+ string
+ string
+
+
+ $token[1]
+ is_string($token) ? $token : $token[1]
+
+
+ $token[0]
+ $token[0]
+ $token[1]
+ $token[1]
+ $token[1]
+
+
+ $token
+
+
+ $token[1]
+
+
+ $this->class
+ $this->declaringClass
+ $this->declaringFunction
+ $this->declaringScannerClass
+ $this->declaringScannerFunction
+ $this->defaultValue
+ $this->name
+ $this->position
+
+
+ $this->tokens
+ $tokens
+ $tokens
+
+
+ $this->defaultValue
+
+
+ T_NAME_FULLY_QUALIFIED
+ T_NAME_QUALIFIED
+
+
+
+
+ $this->docComment === null && $this->name === null
+ $this->name === null
+
+
+ scan
+ setClass
+ setScannerClass
+
+
+ $token
+ $token
+ $tokenContent
+ $tokenContent
+
+
+ $tokenContent
+ $tokenLine
+ $tokenType
+
+
+ $tempValue
+ $this->docComment
+ $token
+ list($tokenType, $tokenContent, $tokenLine)
+
+
+ $tempValue
+
+
+ $nameInformation
+ empty($value) ? null : $value
+
+
+ $class
+ $docComment
+ $lineStart
+ $name
+ $scannerClass
+ $value
+ $valueType
+
+
+
+
+ $namespace === null
+ is_string($namespace)
+
+
+ $return
+
+
+ ClassScanner[]
+
+
+ __toString
+
+
+ function () use (
+ function () use (&$infoIndex, &$infos, &$tokenIndex, &$tokenLine) {
+ function () use (&$tokenIndex, &$docCommentIndex) {
+ function () use (&$tokenIndex, &$docCommentIndex) {
+ function () use (&$tokenType, &$docCommentIndex) {
+
+
+ export
+ scan
+
+
+ $info['name']
+ $info['namespace']
+ $info['namespace']
+ $info['tokenEnd'] - $info['tokenStart'] + 1
+ $info['tokenStart']
+ $info['uses']
+ $info['uses']
+ $namespace
+ $validTrailingTokens
+
+
+ $includeTypes[$tokens[$tokenIndex][0]]
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['name']
+ $info['namespace']
+ $info['namespace']
+ $info['namespace']
+ $info['namespace']
+ $info['namespace']
+ $info['namespace']
+ $info['statements']
+ $info['tokenEnd']
+ $info['tokenStart']
+ $info['tokenStart']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['type']
+ $info['uses']
+ $info['uses']
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $token[0]
+ $token[1]
+ $token[2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+
+
+ $includeTypes[$tokens[$tokenIndex][0]]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $infos[$infoIndex]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex + 2]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+ $tokens[$tokenIndex]
+
+
+ $docCommentIndex
+ $functionNames[]
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $info
+ $infoIndex
+ $infos[$infoIndex]['lineEnd']
+ $infos[$infoIndex]['shortName']
+ $infos[$infoIndex]['statements'][$useStatementIndex]['as']
+ $infos[$infoIndex]['tokenEnd']
+ $namespace
+ $namespace
+ $namespaces[]
+ $namespaces[]
+ $return[]
+ $statement
+ $this->docComment
+ $token
+ $token
+ $tokenContent
+ $tokenIndex
+ $tokenIndex
+ $type
+ $uses[]
+ $value
+
+
+ string|null
+
+
+ $infoIndex
+ $info['tokenEnd']
+ $infos[$infoIndex]['shortName']
+ $infos[$infoIndex]['statements'][$useStatementIndex]['use']
+ $namespace
+ $tokenContent
+ $tokenContent
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+ $tokenIndex
+
+
+ $this->docComment
+
+
+ $namespace
+ $namespace
+
+
+ $tokens
+
+
+ $info
+ $info
+ $info
+ $info
+ $info
+
+
+ $nameInformation
+
+
+ is_string($name)
+
+
+
+
+ $data->uses
+
+
+ $data->uses[$firstPart]
+
+
+ $data->namespace
+ $data->namespace
+
+
+ $data->uses
+
+
+
+
+ testConstructor
+ testSetOptionsThrowsExceptionOnInvalidArgument
+
+
+
+
+ new \stdClass()
+
+
+ testSetDocBlockThrowsExceptionWithInvalidType
+ testSetFlagsWithArray
+
+
+
+
+ 'InvalidArgumentException'
+ 'LaminasTest_Code_NsTest_BarClass'
+
+
+ $resource
+ ExceptionInterface::class
+ []
+ new ClassGenerator()
+ new \stdClass()
+
+
+ 'public'
+ 'public'
+ true
+ true
+ true
+
+
+ testAbstractAccessors
+ testAddConstantAcceptsMixedScalars
+ testAddConstantRejectsArrayWithInvalidNestedValue
+ testAddConstantRejectsObjectConstantValue
+ testAddConstantRejectsResourceConstantValue
+ testAddConstantThrowsExceptionOnDuplicate
+ testAddConstantThrowsExceptionWithEmptyConstantName
+ testAddConstantThrowsExceptionWithInvalidName
+ testAddOneUseTwiceOnlyAddsOne
+ testAddOneUseWithAliasTwiceOnlyAddsOne
+ testAddPropertiesIsBackwardsCompatibleWithConstants
+ testAddPropertyIsBackwardsCompatibleWithConstants
+ testAddTraitAliasExceptionInvalidAliasArgument
+ testAddTraitAliasExceptionInvalidMethodFormat
+ testAddTraitAliasExceptionInvalidMethodTraitDoesNotExist
+ testAddTraitAliasExceptionInvalidVisibilityValue
+ testAddTraitAliasExceptionMethodAlreadyExists
+ testAddTraitOverrideExceptionInvalidMethodArgInArray
+ testAddTraitOverrideExceptionInvalidMethodFormat
+ testAddTraitOverrideExceptionInvalidMethodTraitDoesNotExist
+ testAddTraitOverrideExceptionInvalidTraitName
+ testAddTraitOverrideExceptionInvalidTraitToReplaceArgument
+ testAddUses
+ testCanAddConstant
+ testCanAddConstantsWithArrayOfGenerators
+ testCanAddConstantsWithArrayOfKeyValues
+ testCanAddMultipleTraitOverrides
+ testCanAddTraitAliasWithArray
+ testCanAddTraitAliasWithString
+ testCanAddTraitOverride
+ testCanAddTraitWithArray
+ testCanAddTraitWithString
+ testCanGetTraitsMethod
+ testCanRemoveAllTraitOverrides
+ testCanRemoveTrait
+ testCanRemoveTraitOverride
+ testClassCanBeGeneratedWithConstantAndPropertyWithSameName
+ testClassDocBlockAccessors
+ testClassFromReflectionDiscardParentImplementedInterfaces
+ testClassFromReflectionThatImplementsInterfaces
+ testCodeGenerationShouldTakeIntoAccountNamespacesFromReflection
+ testConstantsAddedFromReflection
+ testConstruction
+ testCorrectExtendNames
+ testCorrectExtendNamesFromGlobalNamespace
+ testCorrectImplementNames
+ testCorrectlyExtendsAliasOfProvidedFQCNIfUseAliasExists
+ testCorrectlyExtendsFullyQualifiedParentClass
+ testCorrectlyExtendsProvidedAliasIfUseAliasExists
+ testCorrectlyExtendsProvidedNamespaceAliasIfUseAliasExistsForNamespace
+ testCorrectlyExtendsRelativeParentClass
+ testCorrectlyExtendsWithNamespaceAliasOfProvidedFQCNIfUseAliasExistsForNamespace
+ testCreateFromArrayWithDocBlockFromArray
+ testCreateFromArrayWithDocBlockInstance
+ testExtendedClassAccessors
+ testExtendedClassProperies
+ testGenerateClassAndAddMethod
+ testGenerateWithFinalFlag
+ testHasExtendedClass
+ testHasImplementedInterface
+ testHasMethod
+ testHasMethodInsensitive
+ testHasProperty
+ testHasUse
+ testHasUseAlias
+ testHereDoc
+ testImplementedInterfacesAccessors
+ testMethodAccessors
+ testNameAccessors
+ testNonNamespaceClassReturnsAllMethods
+ testPassingANamespacedClassnameShouldGenerateAClassnameWithoutItsNamespace
+ testPassingANamespacedClassnameShouldGenerateANamespaceDeclaration
+ testPropertyAccessors
+ testRemoveConstant
+ testRemoveExtendedClass
+ testRemoveImplementedInterface
+ testRemoveMethod
+ testRemoveMethodInsensitive
+ testRemoveProperty
+ testRemoveUse
+ testRemoveUseAlias
+ testSetMethodNameAlreadyExistsThrowsException
+ testSetMethodNoMethodOrArrayThrowsException
+ testSetNameShouldDetermineIfNamespaceSegmentIsPresent
+ testSetPropertyAlreadyExistsThrowsException
+ testSetPropertyNoArrayOrPropertyThrowsException
+ testSetextendedclassShouldIgnoreEmptyClassnameOnGenerate
+ testSetextendedclassShouldNotIgnoreNonEmptyClassnameOnGenerate
+ testToString
+ testTraitGenerationWithAliasesAndOverrides
+ testUseTraitGeneration
+
+
+ $classGenerator->generate()
+ $classGenerator->generate()
+ $classGenerator->generate()
+ $classGenerator->generate()
+ $classGenerator->generate()
+ $classGenerator->generate()
+ $code
+ $code
+ $code
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $output
+ $output
+ $overrides['myTrait::foo']
+ $overrides['myTrait::foo']
+ $overrides['myTrait::foo']
+ $overrides['myTrait::foo']
+ $received
+ $received
+ $received
+ $received
+ $received
+
+
+ $aliases['myTrait::method']['alias']
+ $aliases['myTrait::method']['alias']
+ $aliases['myTrait::method']['visibility']
+ $aliases['myTrait::method']['visibility']
+ $overrides['myTrait::foo'][0]
+ $overrides['myTrait::foo'][1]
+ $overrides['myTrait::foo'][1]
+
+
+ $code
+ $code
+ $code
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $generated
+ $output
+ $output
+ $output
+ $received
+ $received
+ $received
+
+
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+ getDefaultValue
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testNameIsCorrect
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testLicenseProducesCorrectDocBlockLine
+ testNameIsCorrect
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testGetterForMethodNameTrimsCorrectly
+ testNameIsCorrect
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testGetterForVariableNameTrimsCorrectly
+ testNameIsCorrect
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testCreatingTagFromReflection
+ testGetterAndSetterPersistValue
+ testGetterForVariableNameTrimsCorrectly
+ testNameIsCorrect
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testCreatingTagFromReflection
+ testNameIsCorrect
+ testReturnProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testCreatingTagFromReflection
+ testNameIsCorrect
+ testParamProducesCorrectDocBlockLine
+
+
+ $reflectionTag
+
+
+ null
+ null
+
+
+
+
+ testConstructorWithOptions
+ testGetterAndSetterPersistValue
+ testGetterForTypesAsStringWithMultipleTypes
+ testGetterForTypesAsStringWithMultipleTypesAndDelimiter
+ testGetterForTypesAsStringWithSingleType
+ testGetterForTypesAsStringWithSingleTypeAndDelimiter
+
+
+ null
+
+
+
+
+ setVariableName
+ setVariableName
+
+
+
+
+ setDatatype
+ setDatatype
+
+
+ testCanPassTagsToConstructor
+ testCreateFromArray
+ testDocBlockFromReflectionAuthorTag
+ testDocBlockFromReflectionLicenseTag
+ testDocBlockFromReflectionLongDescription
+ testDocBlockFromReflectionParamTag
+ testDocBlockFromReflectionReturnTag
+ testDocBlockFromReflectionShortDescription
+ testDocBlockFromReflectionTagsCount
+ testGenerateWithWordWrapDisabled
+ testGenerateWordWrapIsEnabledByDefault
+ testGenerationOfDocBlock
+ testLongDescriptionGetterAndSetter
+ testShortDescriptionGetterAndSetter
+ testTagGettersAndSetters
+
+
+
+
+ testCanAppendToBodyOfReflectedFile
+ testClassNotFoundException
+ testConstruction
+ testCreateFromArrayWithClassFromArray
+ testCreateFromArrayWithClassInstance
+ testFileLineEndingsAreAlwaysLineFeed
+ testFromFileReflection
+ testFromReflection
+ testGeneratedClassesHaveUses
+ testGeneratesNamespaceStatements
+ testGeneratesUseStatements
+ testGeneratingFromAReflectedFileName
+ testIndentationGetterAndSetter
+ testIssue4747FileGenerationWithAddedMethodIsCorrectlyFormatted
+ testSetUseAllowsMultipleAliasedUseStatements
+ testSetUseDoesntGenerateMultipleIdenticalUseStatements
+ testSetUsesDoesntGenerateMultipleIdenticalUseStatements
+ testSetUsesWithArrays
+ testSetUsesWithGetUses
+ testSetUsesWithString
+ testSourceContentGetterAndSetter
+ testToString
+
+
+ require_once $file
+ require_once $tempFile
+
+
+
+
+ testAbstractAccessorsReturnsFalse
+ testClassNotAnInterfaceException
+ testCodeGenerationShouldTakeIntoAccountNamespacesFromReflection
+ testCreateFromArrayWithDocBlockFromArray
+ testCreateFromArrayWithDocBlockInstance
+ testExtendedClassAccessors
+ testGenerateClassAndAddMethod
+ testGenerateImplementsInterface
+ testImplementedInterfacesAccessors
+ testMethodAccessors
+ testPassingANamespacedClassnameShouldGenerateAClassnameWithoutItsNamespace
+ testPassingANamespacedClassnameShouldGenerateANamespaceDeclaration
+ testPropertyAccessors
+ testSetNameShouldDetermineIfNamespaceSegmentIsPresent
+ testSetextendedclassShouldIgnoreEmptyClassnameOnGenerate
+ testSetextendedclassShouldNotIgnoreNonEmptyClassnameOnGenerate
+ testToString
+
+
+ $received
+ $received
+ $received
+ $received
+ $received
+
+
+ $output
+ $output
+ $output
+ $received
+ $received
+ $received
+
+
+ isInterface
+ isInterface
+
+
+
+
+ $className
+
+
+ new stdClass()
+
+
+ $baz
+ $foo
+
+
+ returnTypeHintClasses
+ testByRefReturnType
+ testCopyMethodSignature
+ testCreateFromArray
+ testCreateInterfaceMethodFromArray
+ testDefaultValueGenerationDoesNotIncludeTrailingSemicolon
+ testDocBlockGetterAndSetter
+ testFrom
+ testFromByReferenceMethodReflection
+ testMethodBodyGetterAndSetter
+ testMethodCanHaveDocBlock
+ testMethodConstructor
+ testMethodFromReflection
+ testMethodFromReflectionMultiLinesIndention
+ testMethodParameterAccessors
+ testMethodParameterMutator
+ testMethodWithFinalModifierIsEmitted
+ testMethodWithFinalModifierIsNotEmittedWhenMethodIsAbstract
+ testMethodWithStaticModifierIsEmitted
+ testSetReturnType
+ testSetReturnTypeWithNull
+
+
+ generate
+
+
+
+
+ 'LaminasTest_Code_NsTest_BarClass'
+ 'Namespaced\TypeHint\Bar'
+
+
+
+ string[][]
+
+
+ dataFromReflectionGenerate
+ testCallableTypeHint
+ testCreateFromArray
+ testDefaultValueGetterAndSetterPersistValue
+ testFromReflectionGenerate
+ testFromReflectionGetArrayHint
+ testFromReflectionGetDefaultValue
+ testFromReflectionGetDefaultValueNotOptional
+ testFromReflectionGetParameterName
+ testFromReflectionGetParameterType
+ testFromReflectionGetReference
+ testFromReflectionGetWithNativeType
+ testGenerateIsCorrect
+ testGeneratedParametersHaveEscapedDefaultValues
+ testGeneratesSimpleHints
+ testGetInternalClassDefaultParameterValue
+ testNameGetterAndSetterPersistValue
+ testOmitType
+ testParameterGeneratorReturnsCorrectTypeForNonNamespaceClasses
+ testPositionGetterAndSetterPersistValue
+ testSetGetVariadic
+ testTypeGetterAndSetterPersistValue
+ testTypeHintFromReflection
+ testTypeHintFromReflectionGeneratedCode
+ testTypeHintWithValidClassName
+ testTypehintsWithNamespaceInNamepsacedClassReturnTypewithBackslash
+ testVariadicArgumentFromReflection
+
+
+ $parameter[3]
+
+
+
+
+ [PropertyGenerator::FLAG_CONSTANT, $flag]
+ new \stdClass()
+
+
+
+ bool[][]|string[][]|int[][]|null[][]
+
+
+ testOmitType
+
+
+ Generator
+
+
+ testSetTypeSetValueGenerate
+
+
+ assertIsArray
+
+
+
+
+ testPropertyValueAddsSemicolonToValueGenerator
+
+
+
+
+ foo
+
+
+
+
+ $privateClassProperty
+ $protectedClassProperty
+ $publicClassProperty
+
+
+
+
+ $privateExtendedClassProperty
+ $protectedExtendedClassProperty
+ $publicExtendedClassProperty
+
+
+
+
+ method
+
+
+
+
+ $array
+ $array
+ $b
+ $baz
+ $con
+ $float
+ $number
+ $number
+ $param
+ $val
+ $val
+ $value
+ $value
+
+
+ defaultArray
+ defaultArrayWithValues
+ defaultConstant
+ defaultFalse
+ defaultFloat
+ defaultNull
+ defaultNumber
+ defaultObjectEqualsNullAndNotOptional
+ defaultTrue
+ defaultValue
+ defaultZero
+ fromArray
+ hasNativeDocTypes
+ name
+ reference
+ type
+
+
+
+
+ setName
+
+
+
+
+ someFunction
+
+
+
+
+ $_barProperty
+ $_barStaticProperty
+ $_bazProperty
+ $_bazStaticProperty
+ $_complexType
+ $fooStaticProperty
+
+
+
+
+ bool
+
+
+ $mixed
+
+
+
+
+ bool
+
+
+
+
+ generate
+
+
+ TypeableTag
+ TypeableTag
+
+
+
+
+ 'LaminasTest_Code_NsTest_BarClass'
+
+
+ ExceptionInterface::class
+
+
+ true
+ true
+
+
+ testAbstractAccessorsReturnsFalse
+ testAddOneUseTwiceOnlyAddsOne
+ testAddOneUseWithAliasTwiceOnlyAddsOne
+ testAddUses
+ testClassDocBlockAccessors
+ testClassFromReflectionDiscardParentImplementedInterfaces
+ testClassFromReflectionThatImplementsInterfaces
+ testCodeGenerationShouldTakeIntoAccountNamespacesFromReflection
+ testConstruction
+ testCreateFromArrayWithDocBlockFromArray
+ testCreateFromArrayWithDocBlockInstance
+ testExtendedClassAccessors
+ testExtendedClassProperies
+ testGenerateClassAndAddMethod
+ testHasMethod
+ testHasMethodInsensitive
+ testHasProperty
+ testImplementedInterfacesAccessors
+ testMethodAccessors
+ testNameAccessors
+ testNonNamespaceClassReturnsAllMethods
+ testPassingANamespacedClassnameShouldGenerateAClassnameWithoutItsNamespace
+ testPassingANamespacedClassnameShouldGenerateANamespaceDeclaration
+ testPropertyAccessors
+ testRemoveMethod
+ testRemoveMethodInsensitive
+ testSetMethodNameAlreadyExistsThrowsException
+ testSetMethodNoMethodOrArrayThrowsException
+ testSetNameShouldDetermineIfNamespaceSegmentIsPresent
+ testSetPropertyAlreadyExistsThrowsException
+ testSetPropertyNoArrayOrPropertyThrowsException
+ testSetextendedclassShouldIgnoreEmptyClassnameOnGenerate
+ testSetextendedclassShouldNotIgnoreNonEmptyClassnameOnGenerate
+ testToString
+
+
+ $code
+ $code
+ $code
+ $generated
+ $generated
+ $generated
+ $output
+ $received
+ $received
+ $received
+ $received
+ $received
+
+
+ $code
+ $code
+ $code
+ $generated
+ $generated
+ $generated
+ $output
+ $output
+ $received
+ $received
+ $received
+
+
+
+
+ testFromValidTypeString
+ testIsAGenerator
+ testRejectsInvalidTypeString
+ testStringCastFromValidTypeString
+ testStripsPrefixingBackslashFromClassNames
+
+
+
+
+ 3 => 'e'
+
+
+ $constants
+
+
+ constantsType
+ testAllowedPossibleConstantsType
+ testDefaultInstance
+ testEscaping
+ testInvalidConstantsType
+ testPropertyDefaultValueCanHandleArray
+ testPropertyDefaultValueCanHandleArrayWithUnsortedKeys
+ testPropertyDefaultValueCanHandleBool
+ testPropertyDefaultValueCanHandleComplexArrayOfTypes
+ testPropertyDefaultValueCanHandleStrings
+ testPropertyDefaultValueCanHandleUnquotedString
+ testPropertyDefaultValueConstructor
+ testPropertyDefaultValueIsSettable
+ testValidConstantTypes
+
+
+ Generator
+ array
+ array
+ array
+ array
+ array
+
+
+
+
+ setMethods
+
+
+ testAddAndGetPrototype
+ testFallBackToGeneric
+ testSetNameOnGenericIsCalledOnce
+
+
+ null
+
+
+
+
+ testNamespaceResolverCorrectlyResolvesNames
+ testNamespaceResolverPersistsNamespace
+ testNamespaceResolverPersistsUseRules
+
+
+
+
+ 'ReflectionClass'
+ __NAMESPACE__ . '\\' . $className
+
+
+ testGetContentsReturnsContents
+ testGetContentsReturnsContentsWithImplementsOnSeparateLine
+ testGetContentsReturnsEmptyContentsOnEvaldCode
+ testGetContentsReturnsEmptyContentsOnInternalCode
+ testGetDeclaringFileReturnsFilename
+ testGetTraits
+ testInterfaceReturn
+ testMethodReturns
+ testParentReturn
+ testPropertyReturns
+ testStartLine
+
+
+ $parent
+
+
+ getName
+
+
+
+
+ testParseName
+ testParseNameAndEmail
+
+
+
+
+ testParse
+
+
+
+
+ testParseUrl
+ testParseUrlAndLicenseName
+
+
+
+
+ getReturnType
+ getReturnType
+ getReturnType
+ getReturnType
+ getReturnType
+
+
+ testParseName
+ testParseNameAndStatic
+ testParseNameAndStaticAndDescription
+ testParseNameAndType
+ testParseNameAndTypeAndStaticAndDescription
+
+
+
+
+ getType
+ getType
+ getType
+ getType
+
+
+ testParseName
+ testParseNameAndDescription
+ testParseTypeAndName
+ testParseTypeAndNameAndDescription
+
+
+
+
+ testAllCharactersFromTypenameAreSupported
+ testMultipleTypesWithDescription
+ testMultipleTypesWithoutDescription
+ testSingleTypeWithDescription
+ testSingleTypeWithoutDescription
+
+
+
+
+ testParse
+
+
+ array
+
+
+
+
+ getType
+ getType
+ getType
+ getType
+ getType
+
+
+ testDocBlockContents
+ testDocBlockLines
+ testDocBlockLongDescription
+ testDocBlockShortDescription
+ testDocBlockTags
+ testFunctionDocBlockTags
+ testShortDocBlocks
+ testTabbedDocBlockTags
+ testToString
+
+
+ getContents
+ getLongDescription
+ getShortDescription
+ getShortDescription
+ getShortDescription
+ getStartLine
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTags
+ getTags
+ getTags
+ getTags
+ getTags
+ getTags
+ getTags
+ getTags
+ getTags
+ hasTag
+ hasTag
+
+
+ getDescription
+ getType
+ getType
+ getType
+
+
+
+
+ testFileCanReflectFileWithInterface
+ testFileCanReflectFileWithUses
+ testFileConstructorFromAReflectedFilenameInIncludePath
+ testFileConstructorFromAReflectedFilenameInIncludePathWithoutIncludeFlagEnabled
+ testFileConstructorFromAReflectedFilenameIncluded
+ testFileConstructorThrowsExceptionOnNonExistentFile
+ testFileGetClassReturnsClassReflectionObject
+ testFileGetClassReturnsFirstClassWithNoOptions
+ testFileGetClassThrowsExceptionOnNonExistentClassName
+ testFileGetDocBlockReturnsFileDocBlock
+ testFileGetFilenameReturnsCorrectFilename
+ testFileGetFunctionsReturnsFunctions
+ testFileGetLineNumbersWorks
+ testFileReflectionShouldNotRaiseNoticesWhenReflectingClosures
+ testFileReflectorRequiredFunctionsDoNothing
+
+
+ getAuthorEmail
+ getAuthorName
+
+
+ getAuthorEmail
+ getAuthorName
+
+
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToReflect
+ include_once $fileToRequire
+
+
+
+
+ __NAMESPACE__ . '\\' . $functionName
+
+
+ testFunctionBodyReturn
+ testFunctionClosureBodyReturn
+ testFunctionClosureContentsReturnWithDocBlock
+ testFunctionClosureContentsReturnWithoutDocBlock
+ testFunctionContentsReturnWithDocBlock
+ testFunctionContentsReturnWithoutDocBlock
+ testFunctionDocBlockReturn
+ testGetContentsReturnsEmptyContentsOnEvaldCode
+ testGetContentsReturnsEmptyContentsOnInternalCode
+ testGetPrototypeMethod
+ testInternalFunctionBodyReturn
+ testInternalFunctionContentsReturn
+ testParemeterReturn
+
+
+ $function1
+ $function10
+ $function10
+ $function2
+ $function2
+ $function3
+ $function4
+ $function5
+ $function6
+ $function7
+ $function8
+ $function9
+ $function9
+ $function9
+
+
+ $list1['closure']
+ $list2[0]
+ $list3[0]
+
+
+ $function5
+ $function6
+ $function7
+
+
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+ $body
+
+
+ $function1
+ $function10
+ $function10
+ $function2
+ $function2
+ $function3
+ $function4
+ $function8
+ $function9
+ $function9
+ $function9
+ $list1
+ $list2
+ $list3
+
+
+
+
+ 'DOMDocument'
+ 'DOMDocument'
+ 'DateTime'
+ 'FooClass'
+ 'ReflectionClass'
+ 'ReflectionException'
+ __NAMESPACE__ . '\\' . $className
+
+
+ testCanParseClassBodyWhenUsingTrait
+ testCodeGetBodyReturnsEmptyWithCommentedFunction
+ testCodeGetContentsDoesNotThrowExceptionOnDocBlock
+ testDeclaringClassReturn
+ testFunctionContentsReturnWithDocBlock
+ testGetBodyReturnsCorrectBody
+ testGetContentsReturnsEmptyContentsOnEvaldCode
+ testGetContentsReturnsEmptyContentsOnInternalCode
+ testGetContentsWithCoreClass
+ testGetPrototypeMethod
+ testInternalFunctionBodyReturn
+ testInternalMethodContentsReturn
+ testMethodContentsReturnWithoutDocBlock
+ testParemeterReturn
+ testStartLine
+
+
+
+
+ paramType
+ testCallableTypeHint
+ testClassReturn
+ testClassReturnNoClassGivenReturnsNull
+ testDeclaringClassReturn
+ testDetectType
+ testDetectTypeWithDocBlockOnlyTypes
+ testGetType
+ testGetTypeWithDocBlockOnlyTypes
+ testTypeReturn
+
+
+
+
+ testDeclaringClassReturn
+
+
+
+
+ testAllowsMultipleSpacesInDocBlockTagLine
+ testAllowsMultipleSpacesInDocBlockTagLine2
+ testNamespaceInParam
+ testPropertyVarDoc
+ testReturnClassWithNamespace
+ testTagDescriptionIsReturned
+ testTagShouldAllowJustTagNameInDocBlockTagLine
+ testTagShouldAllowMultipleWhitespacesBeforeDescription
+ testToString
+ testType
+ testTypeParam
+ testVariableName
+
+
+ array
+
+
+ getAuthorEmail
+ getAuthorName
+ getContent
+ getContent
+ getDescription
+ getDescription
+ getDescription
+ getName
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getTag
+ getType
+ getType
+ getType
+ getType
+ getType
+ getType
+ getVariableName
+ getVariableName
+ getVariableName
+
+
+ $tag
+
+
+ getAuthorEmail
+ getAuthorName
+ getContent
+ getContent
+ getDescription
+ getDescription
+ getDescription
+ getType
+ getType
+ getType
+ getType
+ getType
+ getType
+ getVariableName
+ getVariableName
+ getVariableName
+
+
+
+
+ foo
+
+
+
+
+ $bar
+ $foo
+
+
+ test1
+ test2
+
+
+
+
+ $fileScanner
+
+
+ $fileScanner
+
+
+ setFileScanner
+
+
+ createFileScanner
+
+
+ $this->fileScanner
+
+
+
+
+ $fileScanner
+
+
+ $fileScanner
+
+
+ setFileScanner
+
+
+ createFileScanner
+
+
+ $this->fileScanner
+
+
+
+
+ $fileScanner
+
+
+ $fileScanner
+
+
+ setFileScanner
+
+
+ createFileScanner
+
+
+ $this->fileScanner
+
+
+
+
+ $content
+
+
+ $content
+
+
+ initialize
+
+
+ $content
+
+
+
+
+ 'mixedValue'
+
+
+ int
+
+
+ $two
+ $two
+
+
+
+
+ $foo
+
+
+ function($foo) { return $foo; }
+
+
+ $one
+ $three
+ $two
+
+
+ doSomethingAgain
+ doSomethingElse
+ doStaticSomething
+ emptyFunction
+ getCacheKey
+ inline1
+ inline2
+ inline3
+ visibility
+
+
+ $arg
+ $argElement
+
+
+ $arg
+ $argElement
+
+
+
+
+ Something
+
+
+ doSomething
+
+
+ Something
+
+
+
+
+ $onlyType
+ $typeDescription
+ $typeName
+ $typeNameDescription
+
+
+
+
+ []
+
+
+ getIterator
+
+
+ $param1
+
+
+ $_prop1
+ $_prop2
+
+
+ getProp1
+ getProp2
+
+
+
+
+ 'mixedValue'
+
+
+ int
+
+
+ $two
+ $two
+
+
+
+
+ Laminas\Code\Reflection\DocBlock
+
+
+ Laminas\Code\Reflection\DocBlock
+
+
+
+
+ Laminas\Code\Reflection\DocBlock
+
+
+ Laminas\Code\Reflection\DocBlock
+
+
+
+
+ []
+
+
+ getIterator
+
+
+ $param1
+
+
+ $_prop1
+ $_prop2
+
+
+ getProp1
+ getProp2
+
+
+
+
+ $autoFetchingAllowed
+
+
+ Model_AbstractModel
+
+
+ $dummy
+
+
+ Model_AbstractModel
+
+
+
+
+ $arg
+
+
+ function($arg) {
+ function()
+ function()
+ function() use ($list1) { return 'function 8'; }
+ function() { return $c = function() { return 'function7'; }; return $c(); }
+ function() { return 'bar'; }
+ function() { return 'function2'; }
+ function() { return 'function5'; }
+ function() { return 'function6'; }
+ function() {}
+
+
+
+
+ function() { return 'bar'; }
+ function() { return 'function10'; }
+
+
+ $arg
+
+
+ function1
+ function10
+ function11
+ function12
+ function4
+ function5
+ function6
+ function7
+ function8
+ function9
+
+
+
+
+ testAggregationOfDirectories
+
+
+
+
+ assertDifferentInternalFileScanner
+ assertSameInternalFileScanner
+ getCacheCount
+ testCachingFileScannerWillUseSameInternalFileScannerWithMatchingFileName
+
+
+ $cacheProp->getValue($cfs)
+
+
+
+
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+ FooClass
+
+
+ testAbstractClassIsNotInstantiable
+ testClassIsInstantiable
+ testClassScannerCanGetTraitMethodsInGetMethods
+ testClassScannerCanReturnLineNumbers
+ testClassScannerCanScanClassAndGetTraitsAliases
+ testClassScannerCanScanClassThatUsesTraits
+ testClassScannerCanScanInterface
+ testClassScannerCanScanTraits
+ testClassScannerHasClassInformation
+ testClassScannerHasConstant
+ testClassScannerHasMethods
+ testClassScannerHasProperties
+ testClassScannerReturnsMethodsWithMethodScanners
+ testClassScannerReturnsPropertiesWithPropertyScanners
+ testGetConstantsReturnsConstantNames
+ testGetConstantsReturnsInstancesOfConstantScanner
+ testGetInterfacesFromInterface
+ testGetMethodsThrowsExceptionOnDuplicateMethods
+ testHasConstant
+ testHasMethod
+ testHasProperty
+ testInterfaceIsNotInstantiable
+ testTraitIsNotInstantiable
+
+
+ $method->getBody
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+ FooClass::class
+
+
+ getConstantNames
+ getConstants
+ getConstants
+ getLineStart
+ getLineStart
+ getMethodNames
+ getMethods
+ getMethods
+ getName
+ getName
+ getProperties
+ getPropertyNames
+ hasConstant
+ hasMethod
+ hasProperty
+ isAbstract
+ isAbstract
+ isInterface
+ isInterface
+ isTrait
+ isTrait
+ isTrait
+ isTrait
+ isTrait
+
+
+ assertIsArray
+
+
+ $testMethod === 'bar'
+ $testMethod === 'bar'
+
+
+ $method->getBody
+
+
+
+
+ FooClass
+
+
+ testConstantScannerHasConstantInformation
+
+
+ FooClass::class
+
+
+ getConstant
+
+
+ getDocComment
+ getName
+ getName
+ getName
+ getValue
+ getValue
+ getValue
+
+
+
+
+ testCreatesClass
+
+
+
+
+ testDocBlockScannerDescriptions
+ testDocBlockScannerParsesTagsWithNoValuesProperly
+
+
+ $tags[0]
+ $tags[0]
+
+
+ $tags[0]['name']
+ $tags[0]['value']
+
+
+
+
+ testFileScannerCanReturnClasses
+
+
+ getName
+ getName
+
+
+
+
+ '\Laminas\Code\Exception\InvalidArgumentException'
+
+
+ FooClass
+
+
+ testMethodScannerHasMethodInformation
+ testMethodScannerMethodSignatureLatestOptionalParamHasParentheses
+ testMethodScannerParsesClassNames
+ testMethodScannerReturnsBodyMethods
+ testMethodScannerReturnsLineNumbersForMethods
+ testMethodScannerReturnsParameterScanner
+ testMethodScannerReturnsParameters
+ testMethodScannerReturnsPropertyWithNoDefault
+ testMethodScannerSetVisibilityAcceptsIntegerTokens
+ testMethodScannerSetVisibilityThrowsInvalidArgumentException
+ testMethodScannerWorksWithSingleAbstractFunction
+
+
+ FooClass::class
+
+
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+ getMethod
+
+
+ assertIsArray
+
+
+
+
+ testParameterScannerHasParameterInformation
+
+
+ getMethod
+
+
+
+
+ assertNull
+
+
+ FooClass
+
+
+ testPropertyScannerHasPropertyInformation
+ testPropertyScannerReturnsProperValue
+ testPropertyScannerReturnsProperValueRegardlessOfOrder
+
+
+ FooClass::class
+
+
+ getProperties
+ getProperty
+ getProperty
+
+
+ getName
+ getName
+ getName
+ getValue
+ getValue
+ getValue
+ getValue
+ getValue
+ getValueType
+ getValueType
+ isPrivate
+ isPrivate
+ isPrivate
+ isProtected
+ isProtected
+ isProtected
+ isPublic
+ isPublic
+ isPublic
+ isStatic
+ isStatic
+ isStatic
+
+
+
+
+ $password
+ $username
+
+
+ $password
+ $username
+
+
+ $this->password
+ $this->username
+
+
+
+
+ $dbAdapter
+
+
+ setDbAdapter
+
+
+ $this->dbAdapter
+
+
+
+
+ $mapper
+
+
+ find
+ setMapper
+
+
+ $this->mapper
+
+
+
+
+ findEntityOfTypeB
+
+
+
+
+ require_once __DIR__ . '/BarTrait.php'
+ require_once __DIR__ . '/TraitWithSameMethods.php'
+
+
+ bazFooBar
+
+
+
+
+ FooClass
+
+
+ testScannerCanHandleMultipleNamespaceFile
+ testScannerReturnsClassNames
+ testScannerReturnsClassNamesForTraits
+ testScannerReturnsClassScanner
+ testScannerReturnsFunctions
+ testScannerReturnsNamespaces
+ testScannerReturnsNamespacesInNotNamespacedClasses
+
+
+ $use['use']
+
+
+ $foundUses[]
+ $use
+
+
+ getName
+ getName
+
+
+ assertIsArray
+ assertIsArray
+ assertIsArray
+ assertIsArray
+ assertIsArray
+
+
+
+
+ $config
+
+
+ getConfig
+ helloWorld
+
+
+
+
+ FooBarBaz\BazBarFoo
+
+
+ include __DIR__ . '/foo/bar/baz.php'
+
+
+ $one
+ $two
+
+
+ $bar
+
+
+ five
+ four
+ one
+ three
+ two
+
+
+ FooBarBaz\BazBarFoo
+
+
+
+
+ bar
+
+
+
+
+ $foo
+
+
+
+
+ baz
+
+
+
+
+ classParameter
+ closureParameter
+ importedClosureParameter
+ otherClassParameter
+ parentParameter
+ selfParameter
+
+
+
+
+ byRefReturn
+
+
+
+
+ DocBlockOnlyHintsClass
+ InternalHintsClass
+ array
+ bool
+ callable
+ float
+ int
+ self
+ string
+
+
+
+
+ include __DIR__ . '/foo/bar/baz.php'
+
+
+ E\Blarg
+ Local\SubClass
+
+
+
+
+ fooBarBaz
+
+
+
+
+ foo
+ fooBarBaz
+
+
+
+
+ arrayParameter
+ boolParameter
+ callableParameter
+ floatParameter
+ intParameter
+ stringParameter
+
+
+
+
+ ?iterable
+ iterable
+
+
+ iterableParameter
+ nullDefaultIterableParameter
+ nullableIterableParameter
+
+
+
+
+ setGlobalStuff
+
+
+ Bam
+ Bar\Boo
+ GlobalStuff
+ SM\Blah
+
+
+
+
+ fooMethod
+
+
+
+
+ arrayParameter
+ boolParameter
+ callableParameter
+ floatParameter
+ intParameter
+ nullDefaultHintsClassParameter
+ selfParameter
+ stringParameter
+
+
+
+
+ arrayParameter
+ boolParameter
+ callableParameter
+ floatParameter
+ intParameter
+ nullableDefaultHintsClassParameter
+ parentParameter
+ selfParameter
+ stringParameter
+
+
+
+
+ arrayParameter
+ boolParameter
+ callableParameter
+ floatParameter
+ intParameter
+ nullableHintsClassParameter
+ parentParameter
+ selfParameter
+ stringParameter
+
+
+
+
+ ?InternalHintsClass
+ ?NullableReturnTypeHintedClass
+ ?array
+ ?bool
+ ?callable
+ ?float
+ ?int
+ ?parent
+ ?self
+ ?string
+
+
+
+
+ ?object
+ object
+
+
+ nullDefaultObjectParameter
+ nullableObjectParameter
+ objectParameter
+
+
+
+
+ getCache
+
+
+ CachingFileScannerProxy
+ CachingFileScannerProxy
+
+
+
+
+ InternalHintsClass
+ ReturnTypeHintedClass
+ array
+ bool
+ callable
+ float
+ int
+ parent
+ self
+ string
+
+
+
+
+ bazFooBar
+
+
+
+
+ $bar
+ $bar
+ $foo
+ $foo
+
+
+ byRefTypeHintedVariadic
+ byRefVariadic
+ firstVariadicParameter
+ secondVariadicParameter
+ typeHintedVariadicParameter
+
+
+
+
+ bar_foo
+ foo_bar
+
+
+
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 00000000..788bbc00
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+