Cek kata palindrome atau bukan dengan PHP

Berikut adalah tutorial sederhana tentang cara membuat kelas PHP OOP untuk memeriksa apakah sebuah kata adalah palindrom atau bukan.

PADA TUTORIAL INI MENGGUNAKAN PHP VERSI 8.2, PASTIKAN PHP YANG ANDA GUNAKAN SUDAH MENDUKUNG "Constructor property promotion" (PHP 8.0 Keatas)

Palindrom adalah kata yang dapat dibaca sama baik dari depan maupun dari belakang.

Sebenarnya, untuk cara paling singkat adalah menggunakan function strrev. Contohnya seperti dibawah ini:

<?php

class Palindrom
{
    public function isValid(string $text): bool
    {
        return $text == strrev($text);
    }
}

$isValid = (new Palindrom())->isValid('katak');

echo $isValid ? 'Palindrom' : 'Bukan Palindrom';

Tapi bukan itu yang akan kita buat, karena itu menggunakan fungsi bawaan untuk membalikan kata. Kita akan coba cara versi manualnya.

Data set yang digunakan adalah kata kata palindrom yang ada di https://en.wikipedia.org/wiki/List_of_English_palindromic_phrases

Dalam contoh ini, kita akan membuat kelas Palindrome yang memiliki metode untuk memeriksa apakah suatu kata adalah palindrom.

  1. Buat file PHP untuk kelas Palindrome:

     <?php
     class Palindrome{
         public function __construct(private string $word)
         {
         }
    
         public function cleaningWord(string $word): string
         {
             return strtolower(preg_replace('/[^A-Za-z0-9]/', '', $word));
         }
    
         public function isPalindrome(): bool
         {
             $word = $this->cleaningWord($this->word);
             $length = strlen($word);
    
             for ($i = 0; $i < ($length / 2); $i++) {
                 if ($word[$i] !== $word[$length - $i - 1]) {
                     return false;
                 }
             }
    
             return true;
         }
     }
    

    Untuk penjelasannya seperti berikut:

    • __construct: Konstruktor menerima satu parameter yaitu $word (kata yang akan diperiksa).

    • cleaningWord: Metode ini membersihkan kata dari karakter non-alphanumeric dan mengonversi ke huruf kecil.

    • isPalindrome: Metode ini memeriksa apakah kata yang sudah dibersihkan adalah palindrom atau bukan.

  2. Penggunaan Kelas Palindrome:

     // ambil data set dari https://en.wikipedia.org/wiki/List_of_English_palindromic_phrases:
    
     $word1 = new Palindrome('No one made killer apparel like Dame Noon.');
     $word2 = new Palindrome("Go hang a salami, I'm a lasagna hog");
     $word3 = new Palindrome('kupu-kupu');
    
     echo "Kata 1: " . ($word1->isPalindrome() ? 'Palindrom' : 'Bukan Palindrom');
     echo PHP_EOL;
     echo "Kata 2: " . ($word2->isPalindrome() ? 'Palindrom' : 'Bukan Palindrom');
     echo PHP_EOL;
     echo "Kata 3: " . ($word3->isPalindrome() ? 'Palindrom' : 'Bukan Palindrom');
     echo PHP_EOL;
    
  3. Hasil Eksekusi:

    Kata 1: Palindrom

    Kata 2: Palindrom

    Kata 3: Bukan Palindrom

    Hasil sesuai dengan apa yang di inginkan.

Tutorial ini memberikan cara sederhana untuk memeriksa palindromisme menggunakan konsep OOP dalam PHP. Anda dapat mengembangkan lebih lanjut dengan menambahkan fitur atau memodifikasi kelas sesuai kebutuhan.