Собака в PHP

На повестке дня 2 вопроса:
1) Для чего используется собака в PHP?
2) Можно ли использовать собаку для отключения вывода ошибок в PHP?

Для тех, кто хочет сразу получить ответ:

1) Отключает вывод ошибок при выполнении последующей конструкции.
2) Можно, но не нужно.

Теперь разберём почему

Во-первых, как говорят многие специалисты (мы им в этом поверим) выполнение скрипта существенно замедляется при использовании собаки.
Во-вторых, вывод ошибок отключается не только для пользователя, но также ошибки экранированные собакой никогда не попадут в логи, а это значит, что отлаживать скрипт использующий собаки вам придётся мучительно и долго.

Как надо делать?

Если речь идёт о продакшене, то идеальный вариант это установленное значение error_reporting в E_ALL, при этом нужно установить значение display_errors в off, а error_log устанавливаем в syslog или просто пишем путь к файлу куда хотите писать логи. В таком режиме включается запись ошибок в лог-файл и никакие ошибки не будут выводиться на странице.
Если речь идёт о тестинг-среде, то error_reporting устанавливаем в E_ALL и display_errors в true — это будет выводить все ошибки прямо на странице.

Что делать если ошибки могут возникать в процессе работы скрипта?

Использовать try-catch и эксепшны (Exception). За этим в документацию PHP. :)