classExpressionBinder
final class ExpressionBinder
Restricted visibility: declared "@visibility ZtdQuery\Platform\MySql". Code outside that scope must not name this declaration.
Expression Binder.
Constants§
public const INCOMING_ALIAS = '__ztd_incoming'Incoming alias.
public const EXISTING_ALIAS = '__ztd_existing'Existing alias.
Methods§
public function __construct(
private MySqlIdentifierQuoter $quoter,
private SqlLexerProfile $lexerProfile,
)Configure the dependencies used by this operation.
Parameters
$quoter | MySqlIdentifierQuoter | |
$lexerProfile | SqlLexerProfile |
public function bindExpression(
string $expression,
string $tableName,
list<string> $tableColumns,
string $unqualifiedAlias = self::EXISTING_ALIAS,
?string $incomingNamespace = null,
): stringParameters
$expression | string | |
$tableName | string | |
$tableColumns | list<string> | |
$unqualifiedAlias | string | |
$incomingNamespace | ?string |
Returns
stringTest cases 1
Called from 4
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MetadataColumns::render() packages/ztd-query-mysql/src/Rewrite/Upsert/MetadataColumns.php:36
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MetadataColumns::render() packages/ztd-query-mysql/src/Rewrite/Upsert/MetadataColumns.php:46
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:54
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:61
Calls 11
- class-const ExpressionBinder::EXISTING_ALIAS() line 41
- static-call SqlTokenStream::tokenize() line 44
- method-call ExpressionBinder::subqueryTokenIndexes() line 45
- function-call
array_fill_keysline 48 - function-call
array_mapline 48 - function-call
in_arrayline 56 - class-const SqlTokenKind::Word() line 56
- class-const SqlTokenKind::QuotedIdentifier() line 56
- method-call ExpressionBinder::bindingAt() line 65
- function-call
array_reverseline 72 - function-call
substr_replaceline 73
public function subqueryTokenIndexes(list<SqlToken> $tokens): array<int, true>public function identifier(SqlToken $token): stringIdentifier for the supplied MySQL input.
Parameters
$token | SqlToken |
Returns
stringTest cases 1
Called from 3
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\ExpressionBinder::bindingAt() packages/ztd-query-mysql/src/Rewrite/Upsert/ExpressionBinder.php:125
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\ExpressionBinder::incomingBinding() packages/ztd-query-mysql/src/Rewrite/Upsert/ExpressionBinder.php:163
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\ExpressionBinder::qualifiedBinding() packages/ztd-query-mysql/src/Rewrite/Upsert/ExpressionBinder.php:176
Calls 1
- static-call SqlTokenStream::tokenize() line 112
public function bindingAt(
list<SqlToken> $tokens,
int $index,
array<string, true> $columnNames,
array<string, true> $incomingNamespaces,
string $tableName,
string $unqualifiedAlias,
): array{offset: int, length: int, value: string, skip?: int}|nullParameters
$tokens | list<SqlToken> | |
$index | int | |
$columnNames | array<string, true> | |
$incomingNamespaces | array<string, true> | |
$tableName | string | |
$unqualifiedAlias | string |
Returns
array{offset: int, length: int, value: string, skip?: int}|nullTest cases 1
Called from 1
Calls 13
- method-call ExpressionBinder::identifier() line 125
- function-call
strtolowerline 128 - method-call ExpressionBinder::incomingBinding() line 129
- function-call
in_arrayline 131 - class-const SqlTokenKind::Word() line 131
- class-const SqlTokenKind::QuotedIdentifier() line 131
- class-const ExpressionBinder::INCOMING_ALIAS() line 133
- function-call
strcasecmpline 134 - class-const ExpressionBinder::EXISTING_ALIAS() line 134
- method-call ExpressionBinder::qualifiedBinding() line 135
- function-call
strlenline 143 - method-call QualifiedColumn::qualified() line 144
- new QualifiedColumn line 144
public function incomingBinding(
list<SqlToken> $tokens,
int $index,
): array{offset: int, length: int, value: string, skip: int}|nullParameters
$tokens | list<SqlToken> | |
$index | int |
Returns
array{offset: int, length: int, value: string, skip: int}|nullTest cases 1
Called from 1
Calls 7
- function-call
in_arrayline 157 - class-const SqlTokenKind::Word() line 157
- class-const SqlTokenKind::QuotedIdentifier() line 157
- method-call QualifiedColumn::qualified() line 163
- new QualifiedColumn line 163
- class-const ExpressionBinder::INCOMING_ALIAS() line 163
- method-call ExpressionBinder::identifier() line 163
public function qualifiedBinding(
SqlToken $qualifier,
SqlToken $column,
string $alias,
): array{offset: int, length: int, value: string}Returns
array{offset: int, length: int, value: string}Test cases 1
Called from 1
Calls 4
- method-call SqlToken::endOffset() line 175
- method-call QualifiedColumn::qualified() line 176
- new QualifiedColumn line 176
- method-call ExpressionBinder::identifier() line 176
Private surface 2§
Implementation details, listed for orientation only.
private MySqlIdentifierQuoter $quoterprivate SqlLexerProfile $lexerProfileTest cases 15§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 6
Other tests reaching this symbol 9
MySqlSessionFactoryTestcallsMySqlRewriterTestcallsStatementRewriterTestcallsInsertTransformerTestcallsMySqlTransformerTestcallsReplaceTransformerTestcallsMetadataColumnsTest::testRendercallsMySqlNativeUpsertProjectorTestcallsMySqlMutationResolverTestcalls
Relations§
Instantiated in 3
- new ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:54
- new ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:61
- new ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:76
Method calls 4
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MetadataColumns::render() packages/ztd-query-mysql/src/Rewrite/Upsert/MetadataColumns.php:36
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MetadataColumns::render() packages/ztd-query-mysql/src/Rewrite/Upsert/MetadataColumns.php:46
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:54
- method-call ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:61
Constant reads 5
- class-const ZtdQuery\Platform\MySql\Rewrite\Upsert\MetadataColumns::render() packages/ztd-query-mysql/src/Rewrite/Upsert/MetadataColumns.php:33
- class-const ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:50
- class-const ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:51
- class-const ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:58
- class-const ZtdQuery\Platform\MySql\Rewrite\Upsert\MySqlNativeUpsertProjector::project() packages/ztd-query-mysql/src/Rewrite/Upsert/MySqlNativeUpsertProjector.php:65