SYMBOL INDEX (144 symbols across 23 files) FILE: src/AccessHelper.php class AccessHelper (line 16) | class AccessHelper method collectionKeys (line 21) | public static function collectionKeys(mixed $collection): array method isCollectionType (line 30) | public static function isCollectionType(mixed $collection): bool method keyExists (line 35) | public static function keyExists(mixed $collection, int|string|null $k... method getValue (line 66) | public static function getValue(mixed $collection, int|string|null $ke... method getValueByIndex (line 98) | private static function getValueByIndex(mixed $collection, int $key): ... method setValue (line 126) | public static function setValue(mixed &$collection, int|string|null $k... method unsetValue (line 145) | public static function unsetValue(mixed &$collection, int|string|null ... method arrayValues (line 167) | public static function arrayValues(mixed $collection): array FILE: src/Filters/AbstractFilter.php class AbstractFilter (line 16) | abstract class AbstractFilter method __construct (line 22) | public function __construct(protected JSONPathToken $token, int $optio... method setRootData (line 27) | public function setRootData(mixed $root): void method filter (line 36) | abstract public function filter(array|object $collection): array; FILE: src/Filters/IndexFilter.php class IndexFilter (line 16) | class IndexFilter extends AbstractFilter method filter (line 22) | public function filter(array|object $collection): array FILE: src/Filters/IndexesFilter.php class IndexesFilter (line 19) | class IndexesFilter extends AbstractFilter method filter (line 26) | public function filter(array|object $collection): array FILE: src/Filters/QueryMatchFilter.php class QueryMatchFilter (line 23) | class QueryMatchFilter extends AbstractFilter method filter (line 41) | public function filter(array|object $collection): array method isNumber (line 258) | protected function isNumber(mixed $value): bool method resolveComparisonValue (line 266) | private function resolveComparisonValue(mixed $comparisonValue, mixed ... method normalizeKey (line 294) | private function normalizeKey(mixed $key): int|string|null method isPathComparison (line 303) | private function isPathComparison(mixed $comparisonValue): bool method evaluateConstantExpression (line 308) | private function evaluateConstantExpression(string $expression): ?bool method evaluateLiteralExpression (line 335) | private function evaluateLiteralExpression(string $expression, array|o... method evaluateExpressionWithTrailingLiteral (line 358) | private function evaluateExpressionWithTrailingLiteral( method decodeLiteral (line 384) | private function decodeLiteral(string $literal): mixed method isTruthy (line 399) | private function isTruthy(mixed $value): bool method compareEquals (line 404) | protected function compareEquals(mixed $a, mixed $b): bool method deepEqual (line 432) | private function deepEqual(array $a, array $b): bool method compareLessThan (line 454) | protected function compareLessThan(mixed $a, mixed $b): bool FILE: src/Filters/QueryResultFilter.php class QueryResultFilter (line 16) | class QueryResultFilter extends AbstractFilter method filter (line 22) | public function filter(array|object $collection): array FILE: src/Filters/RecursiveFilter.php class RecursiveFilter (line 16) | class RecursiveFilter extends AbstractFilter method filter (line 23) | public function filter(array|object $collection): array method recurse (line 38) | private function recurse(array &$result, array|object $data): void FILE: src/Filters/SliceFilter.php class SliceFilter (line 15) | class SliceFilter extends AbstractFilter method filter (line 20) | public function filter(array|object $collection): array method normalizeForPositiveStep (line 66) | private function normalizeForPositiveStep(int $length, ?int $start, ?i... method normalizeForNegativeStep (line 98) | private function normalizeForNegativeStep(int $length, ?int $start, ?i... FILE: src/JSONPath.php class JSONPath (line 23) | class JSONPath implements ArrayAccess, Iterator, JsonSerializable, Count... method __construct (line 34) | final public function __construct(mixed $data = [], int $options = 0) method find (line 47) | public function find(string $expression): self method first (line 73) | public function first(): mixed method last (line 89) | public function last(): mixed method firstKey (line 105) | public function firstKey(): string|int|null method lastKey (line 119) | public function lastKey(): string|int|null method parseTokens (line 134) | public function parseTokens(string $expression): array method getData (line 150) | public function getData(): mixed method __get (line 158) | public function __get(string|int $key): mixed method offsetExists (line 163) | #[Override] method offsetGet (line 169) | #[Override] method offsetSet (line 179) | #[Override] method offsetUnset (line 189) | #[Override] method jsonSerialize (line 195) | #[Override] method current (line 201) | #[Override] method next (line 209) | #[Override] method key (line 215) | #[Override] method valid (line 221) | #[Override] method rewind (line 227) | #[Override] method count (line 233) | #[Override] FILE: src/JSONPathException.php class JSONPathException (line 15) | class JSONPathException extends Exception FILE: src/JSONPathLexer.php class JSONPathLexer (line 13) | class JSONPathLexer method __construct (line 45) | public function __construct(string $expression) method parseExpressionTokens (line 80) | public function parseExpressionTokens(): array method lookAhead (line 165) | protected function lookAhead(int $pos, int $forward = 1): ?string method atEnd (line 170) | protected function atEnd(int $pos): bool method parseExpression (line 179) | public function parseExpression(): array method createToken (line 187) | protected function createToken(string $value): JSONPathToken method parseSlice (line 324) | private function parseSlice(string $tokenValue): array method isEscaped (line 335) | private function isEscaped(string $tokenValue): bool method decodeQuotedIndex (line 356) | private function decodeQuotedIndex(string $tokenValue, string $quote):... FILE: src/JSONPathToken.php class JSONPathToken (line 21) | readonly class JSONPathToken method __construct (line 23) | public function __construct( method buildFilter (line 32) | public function buildFilter(int $options): AbstractFilter FILE: tests/AccessHelperTest.php class AccessHelperTest (line 22) | #[CoversClass(AccessHelper::class)] method testKeyExistsRespectsMagicGet (line 25) | public function testKeyExistsRespectsMagicGet(): void method testKeyExistsSupportsArrayAccessAndNegativeIndex (line 48) | public function testKeyExistsSupportsArrayAccessAndNegativeIndex(): void method testGetValueCoversMagicArrayAndArrayAccess (line 79) | public function testGetValueCoversMagicArrayAndArrayAccess(): void method testGetValueByIndexSupportsTraversableAndNegativeOffset (line 131) | public function testGetValueByIndexSupportsTraversableAndNegativeOffse... method testGetValueNullCases (line 144) | public function testGetValueNullCases(): void method testArrayValuesThrowsOnInvalidType (line 153) | public function testArrayValuesThrowsOnInvalidType(): void method testArrayValuesCastsObject (line 162) | public function testArrayValuesCastsObject(): void method testGetValueByIndexReturnsNullWhenOutOfRange (line 169) | public function testGetValueByIndexReturnsNullWhenOutOfRange(): void method testKeyExistsAndCollectionHelpers (line 178) | public function testKeyExistsAndCollectionHelpers(): void method testSetAndUnsetValueAcrossTypes (line 188) | public function testSetAndUnsetValueAcrossTypes(): void FILE: tests/IndexFilterTest.php class IndexFilterTest (line 22) | #[CoversClass(IndexFilter::class)] method testArrayValueTokenReturnsOnlyExistingKeys (line 28) | public function testArrayValueTokenReturnsOnlyExistingKeys(): void method testSingleIndexWorksForObjectsAndArrayAccess (line 42) | public function testSingleIndexWorksForObjectsAndArrayAccess(): void method testWildcardReturnsValuesAndLengthReturnsCount (line 57) | public function testWildcardReturnsValuesAndLengthReturnsCount(): void method testReturnsEmptyWhenKeyMissing (line 71) | public function testReturnsEmptyWhenKeyMissing(): void method testJSONPathFindOnScalarProducesEmptyCollection (line 81) | public function testJSONPathFindOnScalarProducesEmptyCollection(): void FILE: tests/IndexesFilterTest.php class IndexesFilterTest (line 20) | #[CoversClass(IndexesFilter::class)] method testReturnsSliceAndExplicitIndexes (line 26) | public function testReturnsSliceAndExplicitIndexes(): void method testSupportsQueryAndWildcard (line 41) | public function testSupportsQueryAndWildcard(): void FILE: tests/JSONPathCoreTest.php class JSONPathCoreTest (line 18) | class JSONPathCoreTest extends TestCase method testFindAndHelpers (line 23) | public function testFindAndHelpers(): void method testOffsetAccessAndIteration (line 48) | public function testOffsetAccessAndIteration(): void method testParseTokensCachesResults (line 80) | public function testParseTokensCachesResults(): void method testJsonSerializeAndMagicGet (line 90) | public function testJsonSerializeAndMagicGet(): void method testFindOnScalarReturnsEmptyResult (line 110) | public function testFindOnScalarReturnsEmptyResult(): void FILE: tests/JSONPathIntegrationTest.php class JSONPathIntegrationTest (line 18) | class JSONPathIntegrationTest extends TestCase method testArrayObjectTraversal (line 23) | public function testArrayObjectTraversal(): void method testDashedIndexIsParsedWithoutQuotes (line 40) | public function testDashedIndexIsParsedWithoutQuotes(): void method testSlicesResolveViaPublicApi (line 52) | public function testSlicesResolveViaPublicApi(): void FILE: tests/JSONPathLexerTest.php class JSONPathLexerTest (line 20) | #[CoversClass(JSONPathLexer::class)] method testParsesExpressions (line 27) | #[DataProvider('expressionProvider')] method expressionProvider (line 47) | public static function expressionProvider(): iterable method testIndexBadlyFormed (line 270) | public function testIndexBadlyFormed(): void method testRecursiveBadlyFormed (line 281) | public function testRecursiveBadlyFormed(): void method testEmptyExpressionsReturnNoTokens (line 292) | public function testEmptyExpressionsReturnNoTokens(): void method testSingleCharacterExpressionNormalized (line 301) | public function testSingleCharacterExpressionNormalized(): void method testUnclosedBracketThrowsAfterFinalFlush (line 309) | public function testUnclosedBracketThrowsAfterFinalFlush(): void FILE: tests/JSONPathTokenTest.php class JSONPathTokenTest (line 24) | #[CoversClass(JSONPathToken::class)] method testBuildFilterReturnsExpectedTypes (line 27) | public function testBuildFilterReturnsExpectedTypes(): void method testConstructorSetsProperties (line 60) | public function testConstructorSetsProperties(): void FILE: tests/QueryMatchFilterTest.php class QueryMatchFilterTest (line 23) | #[CoversClass(QueryMatchFilter::class)] method filterProvider (line 29) | public static function filterProvider(): iterable method testFilterScenarios (line 186) | #[DataProvider('filterProvider')] method constantExpressionProvider (line 197) | public static function constantExpressionProvider(): iterable method testConstantExpressions (line 213) | #[DataProvider('constantExpressionProvider')] method testShorthandTokenValueArrayFiltersTruthyNodes (line 225) | public function testShorthandTokenValueArrayFiltersTruthyNodes(): void method testMalformedFilterThrowsRuntimeException (line 238) | public function testMalformedFilterThrowsRuntimeException(): void method testLiteralOnlyFilterExpressionsReturnWholeCollectionOrEmpty (line 249) | public function testLiteralOnlyFilterExpressionsReturnWholeCollectionO... method testLogicalExpressionsWithLiteralRightOperand (line 260) | public function testLogicalExpressionsWithLiteralRightOperand(): void method testEmptyFilterExpressionReturnsEmpty (line 280) | public function testEmptyFilterExpressionReturnsEmpty(): void method testNormalizeKeyCastsNumericStrings (line 288) | public function testNormalizeKeyCastsNumericStrings(): void FILE: tests/QueryResultFilterTest.php class QueryResultFilterTest (line 21) | #[CoversClass(QueryResultFilter::class)] method testFilterResolvesComputedIndex (line 27) | public function testFilterResolvesComputedIndex(): void method testFilterReturnsEmptyWhenLengthExceeded (line 43) | public function testFilterReturnsEmptyWhenLengthExceeded(): void method testFilterSupportsAllArithmeticOperators (line 56) | #[DataProvider('arithmeticProvider')] method arithmeticProvider (line 73) | public static function arithmeticProvider(): array method testFilterFallsBackToLengthWhenKeyMissing (line 85) | public function testFilterFallsBackToLengthWhenKeyMissing(): void method testFilterReturnsEmptyWhenKeyNotFound (line 98) | public function testFilterReturnsEmptyWhenKeyNotFound(): void method testFilterReturnsEmptyWhenComputedIndexMissing (line 109) | public function testFilterReturnsEmptyWhenComputedIndexMissing(): void method testFilterReturnsEmptyWhenResultKeyMissing (line 120) | public function testFilterReturnsEmptyWhenResultKeyMissing(): void method testUnsupportedOperatorThrows (line 128) | public function testUnsupportedOperatorThrows(): void FILE: tests/RecursiveFilterTest.php class RecursiveFilterTest (line 20) | #[CoversClass(RecursiveFilter::class)] method testRecursesThroughNestedArraysAndObjects (line 26) | public function testRecursesThroughNestedArraysAndObjects(): void FILE: tests/SliceFilterTest.php class SliceFilterTest (line 21) | #[CoversClass(SliceFilter::class)] method testFilterHandlesNegativeAndNullBounds (line 29) | #[DataProvider('sliceProvider')] method edgeCaseProvider (line 41) | public static function edgeCaseProvider(): iterable method testEdgeCases (line 113) | #[DataProvider('edgeCaseProvider')] method sliceProvider (line 125) | public static function sliceProvider(): array