Dmitriy_2014

Dmitriy_2014
Рейтинг
370
Регистрация
01.07.2014
Интересы
Веб-технологии

Вот еще что интересно было бы узнать, как видит интерпретатор PHP вот эти три разных варианта if, в его видении, в опкодах это для него абсолютно одно и тоже, просто запись для меня разная, извиняюсь за тупой вопрос, но просто если интерпретатор переделывает это все в одно и тоже под себя, то и мне переделывать эти if’ы из двух в один смысла нет:

<?php if ( !is_post_type_archive('cptName') ) { if ( has_term( 'idCategory', 'termName' ) ) { echo ' class="className"'; } } ?>

или

<?php if ( ( !is_post_type_archive('cptName') ) && ( has_term( 'idCategory', 'termName' ) ) ) { echo ' class="className"'; }  ?>

или

<?php echo ( ( !is_post_type_archive('cptName') ) && ( has_term( 'idCategory', 'termName' ) ) )  ?  ' class="className"'  :  ''; ?>
Ладно всем спасибо за подсказки, в общем так как по моим подсчетам это занимает толи 1 миллисекунду, толи 0, то оставлю это все так как есть в виде прототипа на время ( Нет ничего более постоянного, чем временное :) ) .
fliger #:
Массив + цикл.
Массив для меня, наверное, это не вариант, мне будет не удобно, так вроде понятно и удобно.
Ilya74 #:

Если в каждом условии вычисляется одна и та же функция с одними и теми же аргументами, то конечно это нужно выносить в переменную и не вычислять по 100 раз.

Смотрите сколько у вас этих полностью одинаковых is_post_type_archive('cptName') и т.п. и выносите повторения в переменные.

С is_post_type_archive('cptName') так, наверное, можно сделать т.к. там всегда один и тот же аргумент, а вот со второй has_term( 'idCategory', 'termName' ) там id категорий всегда разный.
Мне вообще этот ChatGPT напоминает поисковую систему с ответами на запрос, но говорят, что он генерирует именно типа слова предложения и ал-я речь с ответами, насколько это правда фиг его знает, но прикольно.
temniy #:

можно заменить на

можно заменить на тернарный

Вот я тоже об этом думал, спасибо, использовать AND / && - чтобы убрать одно if. Главное чтобы это было одно и тоже, вместо двух if.
Неуч #:
А вообще - работает - не трожь. Поставь плагин для кэширования и забей. Когда изучишь php - тогда занимайся переписываем, а пока и так сойдет :)
Я так и делаю, но куча if в if смотрится конечно убого, но зато все работает :)
lealhost #:
Замерьте время выполнения и потом решите нормально он времени на это тратит или нет.

Не знаю насколько я правильно делаю замеры, но они получались смешные, с помощью функции timer_stop( 0 ).

В общем для пока что около 42 if’ов, показывает типа в среднем 0,001 сек., а то и просто 0 сек. ( И мне кажется если это правда то это вообще фигня, и я могу надобавлять ещё дофига if’ов, но это не точно )

И таких строк 20, и может будет еще больше:

<?php if ( !is_post_type_archive('cptName') ) { if ( has_term( 'idCategory', 'termName' ) ) { echo ' class="className"'; } } ?>

У меня всего используется две WordPress’овские функции, как вы думаете тяжело ли это для PHP интерпретатора вычислять их по сто раз:

is_post_type_archive() — проверяет, является ли текущая страница архивом произвольного типа постов.

has_term() - Проверяет наличие у поста кастомных терминов, т.е. проверяет есть ли у поста метки/категорий/разделы (с учетом таксономии).

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

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

К черту таро, что, если вызвать дьявола и заключить акт о продаже души в обмен на увеличение трафика до 1 миллиона посетителей в сутки на своем сайте. Черное SEO в сторону, пора применять черную магию :-)

Прикольный рассказ на эту тему:

https://mds-online.ru/author/Роберт_Шекли/Демоны
Всего: 1998