SH8DER
@SH8DER
Начинающий Web-разработчик

Почему класс объявляется внутри проверки на существование класса?

Добрый день.
Не раз уже замечаю вот такую конструкцию:
if ( ! class_exists( 'CT_TAX_META' ) ) {
    class CT_TAX_META {
        // todo some shit
    }
}


Вопрос, почему такая конструкция, почему класс объявляется внутри проверки на существование этого же класса?
Почему нельзя проверить существование класса перед $myClass = new CT_TAX_META(); ?
В чём плюс такого подхода?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Так делают, когда нужно обеспечить поддержку разных версий подключаемых либ. И обеспечить работу там, где нет такого класса.

Пример:

В 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 функция не существует и будет использоваться твоя.

У тебя, тоже самое, только с классами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
flapflapjack
@flapflapjack
на треть я прав
Судя по всему это заглушка. Итам где "some shit" указываются методы заглушки. А ваш код выдаст ошибку если такого класса нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы