Fitur Pencarian
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 85 dari 91.
Tantangan
MudahMari 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: classBookmilikmu dengan property readonly (isbn,title,author), property$isAvailableprivat yang dimulai dengan nilaitrue, serta method:isAvailable(),markAsBorrowed(), danmarkAsReturned().User.php: Sertakan file Book. Buat classUsermilikmu dengan property readonly (id,name), array$borrowedBooksprivat, konstantaMAX_BOOKSbernilai3, serta method:getBorrowedBooks(),canBorrow(),addBook(Book $book), danremoveBook(string $isbn).Library.php: Sertakan file User. Kembangkan classLibrarymilikmu 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_filterdengan fungsi panah danstriposuntuk pencocokan tanpa membedakan huruf besar dan kecil. Ingat bahwastriposmengembalikanfalsejika 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
Librarydan 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"menggunakanUserdengan ID1dan nama"TestUser".Kemudian lakukan pencarian berikut dan cetak hasilnya:
- Cari berdasarkan judul menggunakan input pertama, lalu cetak judul setiap buku yang cocok pada baris baru
- Cari berdasarkan penulis menggunakan input kedua, lalu cetak jumlah buku yang cocok
- Dapatkan buku yang tersedia dan cetak jumlahnya
Format output:
Title matches: [title1] [title2] ... Author matches: [count] Available: [count]- ISBN:
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
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form14Proyek: Manajemen library
Ringkasan ProyekClass Buku dan Pengguna3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online