Нужно ли в дочерней теме WP окутывать функцию тегом ! function_exists ?

123 4
CK
На сайте с 26.02.2016
Offline
40
2698

Ребята, подскажите, никак не могу понять как лучше, работает и так, и так...

В общем, есть такая функция в родительской теме Wordpress:


if( !function_exists('theme_social_links') ){
function theme_social_links(){
...
}
}
add_action( 'theme_right_header_content', 'theme_social_links' );

Я ее себе беру в дочернюю тему, ну и изменяю по своему усмотрению, только как правильнее ее прописать в дочерней теме:

1) Просто написать саму функцию:


function theme_social_links(){
...
}
add_action( 'theme_right_header_content', 'theme_social_links' );

2) Или все же тоже и в дочерней теме взять и окутать ее в тег "если не существует":


if( !function_exists('theme_social_links') ){
function theme_social_links(){
...
}
}
add_action( 'theme_right_header_content', 'theme_social_links' );

Попробовал оба варианта работают одинаково, вот и возник вопрос, а как будет правильнее?

Gerga
На сайте с 02.08.2015
Offline
94
#1

ChrisKorr, зависит от политики проекта. function_exists используется, когда предпологается переопределение функции. В вашем случае без разницы.

CK
На сайте с 26.02.2016
Offline
40
#2
Gerga:
ChrisKorr, зависит от политики проекта. function_exists используется, когда предпологается переопределение функции. В вашем случае без разницы.

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

M
На сайте с 04.10.2011
Offline
90
#3

ChrisKorr, Тут скорее вопрос даже не в "дочерних" темах, а в плане "хорошего тона" в программировании.

Сдается, обращаться скайп avdesk-it-kmm Верстка, кодинг - контакты в профиле... VPS от 5€ (https://gmhost.com.ua/?partner=10255)
S
На сайте с 30.09.2016
Offline
469
#4
ChrisKorr:
Попробовал оба варианта работают одинаково

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

ChrisKorr:
Ну, и отлично, тогда буду без нее, чтоб поменьше кода было. Спасибо
Ага. А потом установите какой-то плагин, который определит такую же функцию раньше Вашей - и будет кирдык сайту.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Gerga
На сайте с 02.08.2015
Offline
94
#5

mmkulikov, безсмысленно делать вещи, которые не пригодятся. Если не нужно каждую функция/класс проверять на повторное объявление - значит не нужно.

Sitealert:
Эта проверка сделана для того, чтобы случайно не назвать функцию таким же именем, какое присвоено какой-то уже существующей функции.

В данном случае проверка не из-за того "чтобы случайно не назвать функцию таким же именем"

Sitealert:
Ага. А потом установите какой-то плагин, который определит такую же функцию раньше Вашей - и будет кирдык сайту.

Вы не видите пользы в ошибках? :) В данном случае ошибка - это лучшее что может быть...

S
На сайте с 30.09.2016
Offline
469
#6
Gerga:
Если не нужно каждую функция/класс проверять на повторное объявление - значит не нужно.

Это изречение так же справедливо, как и противоположное:

Если нужно каждую функцию/класс проверять на повторное объявление - значит нужно.

Тавтология называется.

Gerga
На сайте с 02.08.2015
Offline
94
#7

Sitealert, дело в том, что вы не понимаете когда это нужно, а когда нет. Бессмысленно заниматься раздувательством кода. ТС например по своей внутренней политике понял, что ему function_exists не нужен, значит он не нужен.

---------- Добавлено 13.02.2019 в 21:24 ----------

из-за function_exists могут происходить магические вещи

S
На сайте с 30.09.2016
Offline
469
#8
Gerga:
ТС например по своей внутренней политике понял, что ему function_exists не нужен

ТС это понял исключительно с Вашей подачи, а не по каким-то своим соображениям.

Gerga
На сайте с 02.08.2015
Offline
94
#9

Я объясню немного почему ошибки это хорошо. Ошибки хороши когда мы работаем над программным решением. Устанавливая плагин или редактируя код (а это одно и тоже) - мы работаем над сайтом, если немного абстрагироваться - над программным решением. Если появилась ошибка во время нашей работы - отлично, нужно посмотреть из-за чего и решить, debug в помощью. debug - это лучший помощник программиста! Если использовать function_exists там, где не нужно повторное определение функции - это приведет к непонятному поведении, например

Sitealert:
А потом установите какой-то плагин, который определит такую же функцию раньше Вашей - и будет кирдык сайту.

лучше чтобы был кирдык, чем произошло переопределение функции.

Но ошибки это плохо когда пользователи юзают программное решение. Этого нужно избегать.

Под мы я имею ввиду всех программистов.



---------- Добавлено 13.02.2019 в 21:45 ----------

Sitealert:
ТС это понял исключительно с Вашей подачи, а не по каким-то своим соображениям.

Я и близко не писал, что это уменьшит код. function_exists используется когда это нужно проекту, это действительно так. Т.е. перед началом коддинга делается план на проект, принимаются привила которым нужно следовать.

S
На сайте с 30.09.2016
Offline
469
#10
Gerga:
Если использовать function_exists там, где не нужно повторное определение функции

А Вы точно понимаете, о чём пишете? Покажите мне, как повторно определить функцию, если это нужно.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий