[SOLVED] Error strpos() pada HMVC Codeigniter di PHP 7.3



Baru saja saya menemui ada error di projek Codeigniter (CI) saya. Kebetulan saya baru saja melakukan upgrade versi PHP dari 7.0 ke PHP 7.3. Tidak tahunya hal ini berpengaruh pada projek yang sudah saya buat. Pesan errornya seperti ini :
Message: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior 
Setelah googling sana sini akhirnya ketemu artikel menarik yang mempunyai masalah yang sama seperti punya saya. Dan ketika saya coba pada projek saya alhamdulillah error tersebut berhasil saya atasi.

Berikut caranya jika kamu juga punya masalah yang sama dengan punya saya:

1. Edit file application/third_party/MX/Router.php
2. Cari public function set_class

public function set_class before
public function set_class before

3. Didalam function tersebut terdapat logika untuk mengecek ada tidaknya $suffix, pada versi PHP sebelumnya tidak apa-apa mungkin pada versi terbaru ini (7.3) lebih sensitif kali ya
4. Untuk mengatasinya tambahkan pada logika ifnya menjadi seperti ini:
before:
if( strpos($class, $suffix) === FALSE)

after:
if( $suffix && strpos($class, $suffix) === FALSE)
5. Full codenya menjadi seperti ini:
public function set_class($class) {
        $suffix = $this->config->item('controller_suffix');
        if ($suffix && strpos($class, $suffix) === FALSE) {
            $class .= $suffix;
        }
        parent::set_class($class);
    } 
public function set_classs after
public function set_class after

Selesai. Saya belum tahu apa efek berantainya setelah perubahan tersebut tapi ditempat saya aman, semoga ditempat kamu juga sama ya.

Salam.

3 Responses to "[SOLVED] Error strpos() pada HMVC Codeigniter di PHP 7.3"