Memperbaiki PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 

Kesalahan PHP yang muncul di banyak WordPress Plugins yang sudah lama tidak diperbarui atau tidak kompatibel dengan versi PHP yang lebih baru. PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable.

Dalam skenario kami, kesalahan PHP terjadi di modul Cross Sell Product Display untuk 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

Mengapa kesalahan terjadi? PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable ?

Masalah yang menghasilkan kesalahan PHP ini adalah fungsinya sizeof() yang dalam versi PHP 7.2 atau versi yang lebih baru, dapat menghasilkan kesalahan ini, jika parameter yang diberikan bukan satu array atau objek yang mengimplementasikan antarmuka Countable.

Oleh karena itu, error sering muncul setelah update versi PHP.

Bagaimana mengatasi kesalahan PHP yang dihasilkan oleh sizeof()?

Metode paling sederhana adalah mengganti pemanggilan fungsi sizeof() dengan pemanggilan fungsi count().

Dalam kasus mereka yang menggunakan modul versi lama Cross Sell Product Display, solusinya sederhana. Fungsi dari baris 18 in. akan diganti 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;
	
}

Kode di atas di mana itu sizeof() akan digantikan oleh:

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;
	
}

Modifikasi ini pertama kali memeriksa apakah $crosssells adalah array menggunakan fungsi is_array() dan, jika tidak, kembali false.

Dalam kasus $crosssells adalah array, fungsi digunakan count() untuk menentukan jumlah elemen array. Jika jumlah elemen adalah nol atau $crosssells adalah string kosong, false dikembalikan.

Tinggalkan komentar jika ada klarifikasi atau tambahan pada tutorial ini.

Sebagai pecinta teknologi, saya dengan senang hati menulis di StealthSettings.com sejak tahun 2006. Saya memiliki pengalaman yang kaya dalam sistem operasi: macOS, Windows, dan Linux, serta dalam bahasa pemrograman dan platform blogging (WordPress) dan toko online (WooCommerce, Magento, PrestaShop).

How to » WordPress » Memperbaiki PHP Warning: sizeof(): Parameter must be an array or an object that implements Countable 
Tinggalkan Komentar