Error strpos MX Router Codeigniter

strpos-Non-string-needles-will-be-interpreted-as-strings-in-the-future.-Use-an-explicit-chr-call-to-preserve-the-current-behavior-codeigniter-error-arifharianto-blog-tekno.png

Di artikel kali ini saya akan sharing tentang fixing error MX Router Codeigniter Message: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior.

Beberapa hari ini saya mengerjakan projek diluar pekerjaan kantor yang biasa saya geluti. Selain dikarenakan banyaknya waktu luang karena saya tidak perlu jalan keluar rumah untuk bekerja (WFH), saya juga ingin melepas kejenuhan karena mengerjakan project yang itu-itu aja.

Adalah tawaran dari teman saya untuk membantu salah satu project web dari salah satu dinas, kebetulan project tersebut menggunakan framework Codeigniter yang sudah cukup lama saya gak ngoprek lagi karena pindah ke laravel.

Baca juga : HMVC Codeigniter error ci_object_to_array (Solved)

Singkat cerita setelah saya di terima, saya pun langsung deploy web tersebut di lokal saya. Masalah datang ketika saya baru buka project dengan konfig yang sesuai, eh ada error pada load page, kurang lebih seperti gambar dibawah ini.

strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior

Baru juga dibuka udah error, kurang lebih seperti itulah perasaan saya waktu itu. Setelah browsing di beberapa situs, hal tersebut bakal kejadian jika kalian load MX router di PHP seri 7.0 keatas. Berikut adalah step-step yang bisa Anda lakukan untuk fixing masalah tersebut.

  • Buka project Anda lalu silahkan menuju ke path berikut /application/third_party/MX/Router.php
  • Setelah itu silahkan cari public class public function set_class($class)

Kurang lebih tampilan yang Anda temukan adalah seperti gambar dibawah ini.

public function set_class($class) MX router | arifharianto

Masalah terdapat pada if strpos, sedikit penjelasan kenapa muncul warning error pada PHP page kita. Hal tersebut terjadi karena varible $suffix yang bukan string melainkan NULL.

Sepertinya fungsi strpos pada PHP 7.0 keatas benar-benar harus berbentuk string, sehingga jika variable tidak berbentuk string akan muncul error tersebut.

Solusi

Untuk menghilangkan error tersebut silahkan tambahkan code untuk pengecekan if null pada variable $suffix dengan cara seperti dibawah ini.

Before :
if( strpos($class, $suffix) === FALSE)
After :
if( $suffix && strpos($class, $suffix) === FALSE)

Kurang lebih tampilan class tersebut menjadi seperti berikut :

public function set_class($class) after fixing MX router