Ostrzeżenie PHP: Rozmiar

przez

0

Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem

Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem

0
Ostrzeżenie PHP: Rozmiar

Błąd PHP, który pojawia się w wielu WordPress Plugins które nie były aktualizowane od dłuższego czasu lub są niekompatybilne z nowszymi wersjami PHP. Ostrzeżenie PHP: sizeof(): Parametr musi być tablicą lub obiektem implementującym Countable.

W naszym scenariuszu wystąpił błąd PHP w module Cross Sell Product Display dla WooCommerce.

FastCGI sent in stderr: "PHP message: PHP Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /web/path/public_html/wp-content/plugins/cross-sell-product-display-for-woocommerce/templates.php on line 18

De ce apare eroarea PHP Ostrzeżenie: sizeof(): Parametr musi być tablicą lub obiektem implementującym Countable ?

Problemem generującym ten błąd PHP jest funkcja sizeof() co w wersji PHP 7.2 lub nowszych może wygenerować ten błąd, jeśli podany parametr nie jest jeden array lub obiekt implementujący interfejs Countable.

Dlatego błąd często pojawia się po aktualizacji wersji PHP.

Jak rozwiązać błędy PHP generowane przez sizeof()?

Najprostszą metodą jest zastąpienie wywołania funkcji sizeof() z wywołaniem funkcji count().

W przypadku osób korzystających ze starszych wersji modułu Cross Sell Product Display, rozwiązanie jest proste. Zastąpione zostaną funkcje z linii 18 cali templates.php.

function cdxfreewoocross_get_cross_sell_products($product_id=false){
	
	if($product_id ===false ){
		
		if(!is_product()){return false;}
		
		$product_id = (int)get_the_ID();
		if($product_id=='0'){return false;}
		
	}
	
	$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
	if ( sizeof($crosssells ) == 0  || $crosssells =='') { return false; }
	
	return $crosssells;
	
}

Powyższy kod, w którym znajduje się sizeof() zostanie zastąpiony przez:

function cdxfreewoocross_get_cross_sell_products($product_id=false){
	
	if($product_id ===false ){
		
		if(!is_product()){return false;}
		
		$product_id = (int)get_the_ID();
		if($product_id=='0'){return false;}
		
	}
	
	$crosssells = get_post_meta( $product_id, '_crosssell_ids',true);
	if ( !is_array( $crosssells ) || count( $crosssells ) == 0  || $crosssells =='') { return false; }
	
	return $crosssells;
	
}

Ta modyfikacja najpierw sprawdza, czy $crosssells To jest array za pomocą funkcji is_array() i w przeciwnym razie powraca false.

W takim przypadku $crosssells To jest array, funkcja jest używana count() aby określić liczbę elementów w array. Jeśli liczba elementów wynosi zero lub $crosssells jest pustym ciągiem znaków, zwracana jest wartość false.

Zostaw komentarz, jeśli są jakieś wyjaśnienia lub uzupełnienia do tego samouczka.

Napraw Ostrzeżenie PHP: sizeof (): Parametr musi być tablicą lub obiektem, który implementuje się liczeniem

Może zainteresują Cię także...

Zostaw odpowiedź

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *