Посторонним В.: Можно обойтись анонимной функцией или статическим методом. Но это всё, к сожалению, будет не так красиво, как если бы работало throw работало с оператором ??
Не всегда можно заменить isset на array_key_exists. У них логика разная. А дублирование есть - в коде автора два раза повторяется $this->title_map[$page_type]
Outoverlay: Значит приведите пример простой функции, в которой будет понятна суть вопроса: что она возвращает, а что хотите получить. По вашему описанию сложно что либо советовать, просто не видно в чём проблема.
theWaR_13: Если вам нужны все колонки фиксированной ширины (в пикселях), значит весь сайт будет фиксированной ширины (например 1200px), т. е. не будет тянуться по горизонтали. Вот и создайте один внешний контейнер фиксированной ширины, внутри которого и будет вся вёрстка, а там уже не важно - в пикселях она или в процентах будет. Колонки всё равно будут считаться от той ширины, что вы зададите внешнему контейнеру.
Junior: Нельзя просто так засовывать пробелы и прочие спецсимволы в параметры URL, нужно их кодировать. Кроме того для тегов и обратных ссылок в твиттере есть отдельные параметры.