Почему может не работать функция PHP?
В передаваемом $url содержится url, которого нет в массива self::$routes. Как вы ее вызываете, что передаете, какое содержимое self::$routes?
1. Потому что может быть передан некорректный $url
2. Потому что self::$routes может содержать некорректные данные
3. Потому что
Что в вашем понимании "не работает"?