protected static function modifyInternal(Url $self, array $modify) { $placeholders = []; foreach ($modify as $key => $value) { if (is_int($key)) { if (empty($value)) { continue; } if ($value === '!#') { $self->removeFragment(); continue; } if ($value === '!') { $self->removeQuery(); continue; } if ($value[0] === '!') { $self->removeQueryParams([mb_substr($value, 1, mb_strlen($value, 'UTF-8'), 'UTF-8')]); continue; } continue; } if ($key === '#') { $self->setFragment($value); continue; } if ($key[0] === '@') { $self->{substr($key, 1)} = $value; continue; } if ($key[0] === '+') { $placeholders[mb_substr($key, 1, mb_strlen($key, 'UTF-8'), 'UTF-8')] = $value; continue; } $self->addQueryParams([$key => $value]); } $self->replace($placeholders); return $self; }