Так делают, когда нужно обеспечить поддержку разных версий подключаемых либ. И обеспечить работу там, где нет такого класса.
Пример:
В php7 добавилась функция
error_clear_last
Если ты запустишь такой код в php7, то все будет ок
var_dump(error_get_last());
error_clear_last();
var_dump(error_get_last());
но если в php5 то будет ошибка
----
Теперь другая ситуация, объявляем в php5
function error_clear_last() {}
будет все ок, но в PHP7 будет ошибка тк существует уже такая встроенная функция
----
Задача, надо чтобы работало и там и там
if (!function_exists('error_clear_last')) {
function error_clear_last() {}
}
В итоге, в PHP7 функция уже существует и будет использоваться встроенная, в PHP5 функция не существует и будет использоваться твоя.
У тебя, тоже самое, только с классами.