/**
* @param \SlevomatCodingStandard\Helpers\UseStatement $a
* @param \SlevomatCodingStandard\Helpers\UseStatement $b
* @return integer
*/
private function compareUseStatements(UseStatement $a, UseStatement $b)
{
if (!$a->hasSameType($b)) {
return $a->compareByType($b);
}
$aName = $a->getFullyQualifiedTypeName();
$bName = $b->getFullyQualifiedTypeName();
$i = 0;
for (; $i < min(strlen($aName), strlen($bName)); $i++) {
if ($this->isSpecialCharacter($aName[$i]) && !$this->isSpecialCharacter($bName[$i])) {
return -1;
} elseif (!$this->isSpecialCharacter($aName[$i]) && $this->isSpecialCharacter($bName[$i])) {
return 1;
}
if (is_numeric($aName[$i]) && is_numeric($bName[$i])) {
break;
}
$cmp = strcasecmp($aName[$i], $bName[$i]);
if ($cmp !== 0 || $aName[$i] !== $bName[$i] && strtolower($aName[$i]) === strtolower($bName[$i])) {
return $cmp;
}
}
return strnatcasecmp(substr($aName, $i), substr($bName, $i));
}