Про ErrorException

PHP по-умолчанию не ловит ошибки в блоке try/catch.

Т.е. такой код вывалит ошибку PHP Error[8]: Undefined offset: 1, хоть и ожидается совершенно иное поведение.

try {
    $a = [];
    echo $a[1];
} catch (Exception $e) {}

Чтобы все работало как ожидается, нужно установить отдельный обработчик ошибок, как указано в документации к базовому исключению ErrorException.

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Генерация идентификаторов для уникальных URL

Самый матерый вариант, который я видел, выглядит так:

echo gmp_strval(gmp_init(hash('sha256', microtime()), 16), 62);

В нем берется sha256 хэш и переводится в систему счисления с базой 62 (цифры + латинские символы в верхнем и нижнем регистрах).

Результат получается такой:

5YQNOcr1o2SoNnFbWkmPmbioJOMcjCaQkczywNGJNpN