Menu
CoddyTech

Fitur Pencarian

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 85 dari 91.

challenge icon

Tantangan

Mudah

Mari tingkatkan Sistem Manajemen Perpustakaan kita dengan menambahkan fungsi pencarian. Pengguna perlu menemukan buku dengan mudah, baik saat mencari judul tertentu, menelusuri berdasarkan penulis, maupun memeriksa buku yang saat ini tersedia untuk dipinjam.

Kamu akan mengatur kodemu dalam empat file:

  • Book.php: class Book milikmu dengan property readonly (isbn, title, author), property $isAvailable privat yang dimulai dengan nilai true, serta method: isAvailable(), markAsBorrowed(), dan markAsReturned().
  • User.php: Sertakan file Book. Buat class User milikmu dengan property readonly (id, name), array $borrowedBooks privat, konstanta MAX_BOOKS bernilai 3, serta method: getBorrowedBooks(), canBorrow(), addBook(Book $book), dan removeBook(string $isbn).
  • Library.php: Sertakan file User. Kembangkan class Library milikmu dengan fungsionalitas yang sudah ada, serta tiga method pencarian baru:
    • searchByTitle(string $keyword): array: mengembalikan semua buku yang judulnya memuat kata kunci (tanpa membedakan huruf besar dan kecil)
    • searchByAuthor(string $author): array: mengembalikan semua buku yang nama penulisnya memuat istilah pencarian (tanpa membedakan huruf besar dan kecil)
    • getAvailableBooks(): array: hanya mengembalikan buku yang saat ini tersedia untuk dipinjam

    Gunakan array_filter dengan fungsi panah dan stripos untuk pencocokan tanpa membedakan huruf besar dan kecil. Ingat bahwa stripos mengembalikan false jika tidak menemukan kecocokan, jadi periksa dengan !== false.

  • main.php: Sertakan file Library. Kamu akan menerima dua input: kata kunci pencarian dan nama penulis.

    Buat sebuah Library dan tambahkan empat buku berikut:

    • ISBN: "978-0", Judul: "PHP Basics", Penulis: "John Smith"
    • ISBN: "978-1", Judul: "Advanced PHP", Penulis: "Jane Doe"
    • ISBN: "978-2", Judul: "Python Guide", Penulis: "John Smith"
    • ISBN: "978-3", Judul: "Web Development", Penulis: "Alice Brown"

    Pinjam buku dengan ISBN "978-1" menggunakan User dengan ID 1 dan nama "TestUser".

    Kemudian lakukan pencarian berikut dan cetak hasilnya:

    1. Cari berdasarkan judul menggunakan input pertama, lalu cetak judul setiap buku yang cocok pada baris baru
    2. Cari berdasarkan penulis menggunakan input kedua, lalu cetak jumlah buku yang cocok
    3. Dapatkan buku yang tersedia dan cetak jumlahnya

    Format output:

    Title matches:
    [title1]
    [title2]
    ...
    Author matches: [count]
    Available: [count]

Tantangan ini menunjukkan cara array_filter yang dipadukan dengan stripos menghasilkan fungsi pencarian yang andal dan mudah digunakan. Pencocokan tanpa membedakan huruf besar dan kecil membuat pengguna tidak perlu memperhatikan penggunaan huruf besar atau kecil yang persis saat mencari.

Coba sendiri

<?php

require_once 'Library.php';

// Baca input
$searchKeyword = trim(fgets(STDIN));
$authorName = trim(fgets(STDIN));

// TODO: Buat instance Library

// TODO: Tambahkan empat buku ke library:
// ISBN: "978-0", Judul: "PHP Basics", Penulis: "John Smith"
// ISBN: "978-1", Judul: "Advanced PHP", Penulis: "Jane Doe"
// ISBN: "978-2", Judul: "Python Guide", Penulis: "John Smith"
// ISBN: "978-3", Judul: "Web Development", Penulis: "Alice Brown"

// TODO: Buat User dengan ID 1 dan nama "TestUser", lalu daftarkan

// TODO: Pinjam buku dengan ISBN "978-1"

// TODO: Cari berdasarkan judul menggunakan $searchKeyword dan cetak hasilnya
echo "Title matches:\n";
// Cetak judul setiap buku yang cocok pada baris baru

// TODO: Cari berdasarkan penulis menggunakan $authorName dan cetak jumlahnya
echo "Author matches: " . /* jumlahnya di sini */ "\n";

// TODO: Ambil buku yang tersedia dan cetak jumlahnya
echo "Available: " . /* jumlahnya di sini */ "\n";

?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online