Cara menggunakan php stringable

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Hai, Devs! Hari ini Saya ingin sharing tentang 2 helper yang sangat membantu untuk membuat sebuah blog. Langsung ke inti saja.

Slug

Pembuatan slug selalu digunakan pada hampir semua blog. Dari beberapa opsi URI ke detail tulisan di internet, beberapa adalah pilihannya:

  1. Date-Slug, biasanya ditulis dalam format YYYY-mm-dd-nama-blog. Biasanya digunakan oleh penulis yang menulis banyak artikel dalam satu hari.
  2. Date, hanya ditulis dalam format YYYY-mm-dd. Digunakan oleh penulis yang menulis satu artikel dalam satu hari, jarang digunakan.
  3. Slug, nama artikel ditulis dalam lowercase, serta menggunakan pemisah tanda strip sebagai pengganti spasi. Opsi ini paling banyak digunakan karena calon audiens bisa mengetahui sebagian isi konten hanya dengan melihat URL-nya saja.
  4. ID, detail artikel diambil dalam bentuk angka urut sesuai dengan apa yang disimpan pada database. Jarang digunakan dan juga tidak dianjurkan karena crawler bisa melihat berapa artikel yang ada di website tersebut. Selain itu, jika tidak ada pengaman yang diatur dalam controller, maka website tersebut akan rawan terkena SQL Injection.

Kita ambil kasus pada saat kita akan menyimpan tulisan:

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = strtolower(str_replace(' ', '-', $request->title));
        // dd($blog->slug); // laravel-9-impact-for-the-developers-around-the-world
        $blog->save();
        // ...
    }
    // ...
}

Kita bisa mempersimpel kode kita dengan menggunakan Fasad Str dari Laravel. Cara menggunakannya adalah sebagai berikut:

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = Str::slug($request->title);
        // dd($blog->slug); // laravel-9-impact-for-the-developers-around-the-world
        $blog->save();
        // ...
    }
    // ...
}

Lebih simpel bukan? Namun jika teman-teman lebih suka menggunakan helper ketimbang fasad, maka teman-teman bisa menggunakan kode berikut:

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = str()->slug($request->title);
        // dd($blog->slug); // laravel-9-impact-for-the-developers-around-the-world
        $blog->save();
        // ...
    }
    // ...
}

Tidak suka simbol - di URL teman-teman? Jangan khawatir, teman-teman bisa menggunakan _ dengan menambahkannya sebagai parameter ke-2:

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = str()->slug($request->title, '_');
        // dd($blog->slug); // laravel_9_impact_for_the_developers_around_the_world
        $blog->save();
        // ...
    }
    // ...
}

Diambil dari dokumentasi Laravel, fungsi str() me-return sebuah instans dari Illuminate\Support\Stringable. Fungsi ini ekuivalen dengan

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = Str::slug($request->title);
        // dd($blog->slug); // laravel-9-impact-for-the-developers-around-the-world
        $blog->save();
        // ...
    }
    // ...
}
0.

Penggunaan helper str() hanya tersedia pada Laravel 9 ke atas. Jika teman-teman menggunakan Laravel 8 ke bawah, gunakanlah fasad Str.

Headline

Jika teman-teman membuat blog berbahasa Inggris, teman-teman akan terbantu dengan helper ini.

title = $request->title;
        // Input: Laravel 9 impact for the developers around the world
        $blog->slug = Str::slug($request->title);
        // dd($blog->slug); // laravel-9-impact-for-the-developers-around-the-world
        $blog->save();
        // ...
    }
    // ...
}
3 mengubah huruf kecil ke huruf besar pada setiap hurufnya secara otomatis. Helper ini juga menghapus simbol - dan _. Sangat berguna jika teman-teman hanya menyimpan slug, dan tidak mempunyai kolom title.

Berikut adalah contohnya:

title = str()->headline($request->title);
        // dd($blog->title) // "Create An Immersive Blog Using Laravel"
        $blog->slug = str()->slug($request->title);
        $blog->save();
        // ...
    }
    // ...
}

Sekian informasi yang bisa saya tulis, semoga bermanfaat 👋. Thumbnail oleh Sincerely Media dari Unsplash.