classRelationCursor
final class RelationCursor
Restricted visibility: declared "@visibility root". Code outside that scope must not name this declaration.
Tracks the unread position of one DBML relation statement.
Properties§
public string $sourcepublic int $offset = 0Methods§
public function __construct(public string $source, public int $offset = 0)Opens a statement at its first character.
Parameters
$source | string | |
$offset | int |
public function readIdentifier(string $expected): stringConsumes a quoted or unquoted identifier at the current cursor.
Parameters
$expected | string |
Returns
stringTest cases 2
Called from 4
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:34
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:97
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:105
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:113
Calls 4
- function-call
preg_matchline 32 - class-const RelationCursor::IDENTIFIER() line 32
- new UnexpectedPlanTokenException line 33
- function-call
strlenline 36
public function readOperator(): RelationKindConsumes a supported relation operator.
Returns
Test cases 1
Called from 1
Calls 3
- method-call RelationCursor::peek() line 53
- static-call RelationKind::tryFrom() line 54
- new UnexpectedPlanTokenException line 57
public function readOptionalMarker(): boolConsumes an optional endpoint marker when present.
Returns
boolTest cases 1
Called from 2
Calls 1
- method-call RelationCursor::peek() line 70
public function skipWhitespace(): voidAdvances the cursor past whitespace.
Test cases 1
Called from 6
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:41
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:47
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:70
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:72
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:112
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:114
Calls 2
- method-call RelationCursor::peek() line 84
- function-call
trimline 84
public function expectEnd(): voidRejects trailing input after the relation statement.
Test cases 1
Called from 2
Calls 2
- function-call
strlenline 95 - new UnexpectedPlanTokenException line 96
public function peek(): ?stringReads the next character without advancing the cursor.
Returns
?stringTest cases 6
RelationCursorTest::testExpectEndAcceptsAnExhaustedStatementcallsRelationCursorTest::testPeekDoesNotAdvancecallsRelationCursorTest::testReadIdentifierConsumesQuotedNamescallsRelationCursorTest::testReadOperatorConsumesDirectioncallsRelationCursorTest::testReadOptionalMarkerLeavesUnmarkedInputAlonecallsRelationCursorTest::testSkipWhitespaceStopsBeforeIdentifiercalls
Called from 8
- method-call SqlFixture\Plan\Parsing\RelationCursor::readOperator() packages/sql-fixture/src/Plan/Parsing/RelationCursor.php:53
- method-call SqlFixture\Plan\Parsing\RelationCursor::readOptionalMarker() packages/sql-fixture/src/Plan/Parsing/RelationCursor.php:70
- method-call SqlFixture\Plan\Parsing\RelationCursor::skipWhitespace() packages/sql-fixture/src/Plan/Parsing/RelationCursor.php:84
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:62
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:74
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:99
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:104
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:116
Private surface 1§
Implementation details, listed for orientation only.
private const IDENTIFIER = '/\G(?:`([^`]+)`|"([^"]+)"|([A-Za-z_][A-Za-z0-9_$]*))/'Test cases 39§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 6
RelationCursorTest::testExpectEndAcceptsAnExhaustedStatementcallsRelationCursorTest::testPeekDoesNotAdvancecallsRelationCursorTest::testReadIdentifierConsumesQuotedNamescallsRelationCursorTest::testReadOperatorConsumesDirectioncallsRelationCursorTest::testReadOptionalMarkerLeavesUnmarkedInputAlonecallsRelationCursorTest::testSkipWhitespaceStopsBeforeIdentifiercalls
Other tests reaching this symbol 33
PostgreSqlEndToEndTestcallsSqliteIntegrationTestcallsConnectedTablesTestcallsOverrideSpecsTestcallsRelationCountsTestcallsRelationProjectionTestcallsRowMaterializerTestcallsGenerationRunTestcallsPlanGeneratorTestcallsPlanSchemaExceptionTestcallsPlanSchemaValidatorTestcallsEndpointValidatorTestcallsFixtureProviderTestcallsConstructorHydrationTestcallsPropertyHydrationTestcallsColumnRefTestcallsFixturePlanTestcallsPlanStatementsTestcallsRelationReaderTest::testBuildRelationsCarriesOptionalityToEachTargetcallsRelationReaderTest::testParseStatementExpandsGroupedTargetscallsRelationReaderTest::testReadEndpointPreservesQuotedIdentifierscallsRelationReaderTest::testReadTargetsReadsACompositeEndpointcallsPlanParserTestcallsPlanPrinterTestcallsPlanStructureExceptionTestcallsPlanSyntaxExceptionTestcallsPlanTablesTestcallsRelationGroupsTestcallsStatementPrinterTestcallsRelationTestcallsPlanValidationTestcallsTableNameTestcallsSqlSchemaProviderTestcalls
Relations§
Instantiated in 1
Method calls 20
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:34
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:35
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:41
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:43
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:44
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:45
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:47
- method-call SqlFixture\Plan\Parsing\RelationReader::parseStatement() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:49
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:62
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:70
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:72
- method-call SqlFixture\Plan\Parsing\RelationReader::readTargets() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:74
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:97
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:99
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:104
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:105
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:112
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:113
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:114
- method-call SqlFixture\Plan\Parsing\RelationReader::readEndpoint() packages/sql-fixture/src/Plan/Parsing/RelationReader.php:116