focuspro
@focuspro

Как избежать ошибки в коде, при переходе с PHP 7.2 на PHP 7.4?

Есть код с array_key_exists который считается устаревшим в PHP 7.4
function sort_kb_categories($terms){

			//var_dump($terms);
            //fix for category widget sort
            $custom_category_sort = apply_filters('ht_kb_allow_custom_category_sort', true);
		
			if( $custom_category_sort &&
                isset($terms) &&
				is_array($terms) && 
				count($terms) > 0 &&
				array_key_exists(0, $terms) &&  
				is_object($terms[0]) && 
				array_key_exists('taxonomy', $terms[0]) &&
				$terms[0]->taxonomy == 'ht_kb_category' &&
				array_key_exists('term_order', $terms[0])  ){
					//term order detected now order by term order
					usort($terms, array($this, 'category_sort'));
					return $terms;
			} else {
				return $terms;
			}			
		}


Меняю его на property_exists()

function sort_kb_categories($terms){

			//var_dump($terms);
            //fix for category widget sort
            $custom_category_sort = apply_filters('ht_kb_allow_custom_category_sort', true);
		
			if( $custom_category_sort &&
                isset($terms) &&
				is_array($terms) && 
				count($terms) > 0 &&
				property_exists(0, $terms) &&  
				is_object($terms[0]) && 
				property_exists('taxonomy', $terms[0]) &&
				$terms[0]->taxonomy == 'ht_kb_category' &&
				property_exists('term_order', $terms[0])  ){
					//term order detected now order by term order
					usort($terms, array($this, 'category_sort'));
					return $terms;
			} else {
				return $terms;
			}			
		}


Выдает предупреждение
property_exists() expects parameter 2 to be string, array given
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас неправильный порядок аргументов.
property_exists ( mixed $class , string $property ) : bool
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Заменить array_key_exists(0, $terms) на isset($terms[0]).

P.S. а array_key_exists('taxonomy', $terms[0]) на property_exist($terms[0], 'taxonomy').
Ответ написан
Ваш ответ на вопрос

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

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