• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/lib/sql/constraint.php
  • Класс: BitrixPerfmonSqlConstraint
  • Вызов: Constraint::create
static function create(Tokenizer $tokenizer, $constraintName = '')
{
	if ($constraintName === false)
	{
		$constraintName = '';
	}
	elseif (!$constraintName)
	{
		$constraintName = $tokenizer->getCurrentToken()->text;
		$tokenizer->nextToken();
		$tokenizer->skipWhiteSpace();
	}

	$constraint = new self($constraintName);

	$token = $tokenizer->getCurrentToken();
	$level = $token->level;
	$column = '';
	$constraintDefinition = '';
	do
	{
		if ($token->text === '(' && $token->level == $level)
		{
			$column = '';
		}
		elseif (
			$token->text === ','
			|| ($token->text === ')' && $token->level == $level)
		)
		{
			$column = trim($column);
			if ($column)
			{
				$constraint->columns[] = trim($column);
				$column = '';
			}
		}
		else
		{
			$column .= $token->text;
		}

		if ($token->level == $level && $token->text == ',')
			break;
		if ($token->level < $level && $token->text == ')')
			break;

		$constraintDefinition .= $token->text;

		$token = $tokenizer->nextToken();
	}
	while (!$tokenizer->endOfInput());

	$constraint->setBody($constraintDefinition);

	return $constraint;
}