✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как избежать class_exists в объектно-ориентированном коде WordPress

19

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

В зависимости от версии PHP, которую вы используете, это имеет смысл. Или это было когда-то. Начиная с PHP 5.3.0 в этом нет необходимости. Вместо этого лучше использовать пространства имен.

Как избежать class_exists

Вы можете увидеть все требования для различных версий WordPress на этой странице, поэтому, если вы работаете с устаревшими версиями WordPress, то проверка class_exists может быть оправдана.

Тем не менее, есть важное замечание :

Примечание. Если вы находитесь в устаревшей среде, где у вас есть только более старые версии PHP или MySQL, WordPress также работает с PHP 5.2.4+ и MySQL 5.0+, но эти версии достигли официального окончания срока службы и поэтому могут подвергать ваш сайт уязвимости безопасности.

Но для большинства из нас современные среды хостинга поддерживают как минимум PHP 5.3.0, если не выше, и поэтому нам не нужно использовать class_exists.

Тем не менее, нередко можно увидеть что-то вроде этого :

Или вот так :

Несколько лет назад я бы тоже написал такой код. Иногда это было связано с уже существующей кодовой базой. В других случаях это было потому, что я не знал ничего лучшего. Дело в том, что это стало тем, что мы видим в коде на основе WordPress, когда нам не нужно его использовать.

На самом деле, я бы сказал, что мы не должны использовать его больше.

Но чем больше кода вы пишете и чем больше кода читаете, тем больше вы учитесь, верно? Это часть всей причины для пространств имен и автозагрузки.

Так как же будет написан приведенный выше код?

Может вот так :

Тем не менее, у некоторых возникает вопрос: как пространства имен помогают вместо использования class_exists?

В идеале, если один и тот же класс существует в пространстве имен, значит, существует проблема с пространством имен. Помните, что вы можете думать о пространстве имен как о пакете, состоящем из уникальных частей. И поскольку они уникальны, в этом классе никогда не должно быть другого произведения или другого такого же класса.

С этой целью вместо использования проверок class_exists стремитесь использовать пространства имен. Конечно, я не говорю вернуться и реорганизовать весь ваш код — я этого не делал — но это не значит, что код, который я пишу или просматриваю, включает в себя использование или рекомендации.

Это простое изменение может иметь большое значение для того, чтобы сделать код более читабельным, замусоренным меньшим количеством условных выражений (пост в другой раз) и сделать его гораздо более организованным.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее