Antarmuka Admin
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 86 dari 91.
Tantangan
MudahMari kita kembangkan Sistem Manajemen Perpustakaan dengan menambahkan kemampuan administratif. Kamu akan membuat class Admin yang mewarisi User, tetapi memiliki hak khusus untuk mengelola inventaris perpustakaan: menambahkan buku baru dan menghapus buku yang sudah ada.
Kamu akan mengatur kodemu dalam lima file:
Book.php: classBookdengan property readonly (isbn,title,author), property$isAvailableprivate yang nilai awalnyatrue, dan method:isAvailable(),markAsBorrowed(), danmarkAsReturned().User.php: Sertakan file Book. ClassUserdengan property readonly (id,name), array$borrowedBooksprivate, konstantaMAX_BOOKSbernilai3, dan method:getBorrowedBooks(),canBorrow(),addBook(Book $book), danremoveBook(string $isbn).Library.php: Sertakan file User. ClassLibrarydengan fungsionalitas yang sudah ada, termasukaddBook(),findBook(),borrowBook(),returnBook(), dan method pencarian. Tambahkan method baru:removeBook(string $isbn): void: menghapus buku dari koleksi menggunakanunset()
Admin.php: Sertakan file Library. Buat classAdminyang memperluasUser. Admin mewarisi semua kemampuan user, tetapi juga mendapatkan dua method administratif:addBookToLibrary(Library $library, Book $book): string: menambahkan buku ke perpustakaan dan mengembalikan"Added: [title]"removeBookFromLibrary(Library $library, string $isbn): string: mencoba menghapus buku dengan pemeriksaan berikut:- Jika buku tidak ada, kembalikan
"Book not found" - Jika buku sedang dipinjam, kembalikan
"Cannot remove: book is currently borrowed" - Jika tidak, hapus buku tersebut dan kembalikan
"Removed: [title]"
- Jika buku tidak ada, kembalikan
main.php: Sertakan file Admin. Kamu akan menerima dua input: ISBN dan judul buku.Buat
LibrarydanAdmindengan ID1dan nama"AdminUser". Buat jugaUserbiasa dengan ID2dan nama"RegularUser".Buat
Bookdengan ISBN, judul, dan penulis"Test Author"yang diberikan. Lakukan operasi berikut dan cetak setiap hasil pada baris baru:- Minta admin menambahkan buku ke perpustakaan
- Minta user biasa meminjam buku
- Minta admin mencoba menghapus buku (seharusnya gagal: buku sedang dipinjam)
- Minta user biasa mengembalikan buku
- Minta admin menghapus buku (seharusnya berhasil sekarang)
- Minta admin mencoba menghapus buku yang sama lagi (seharusnya gagal karena buku tidak ditemukan)
Tantangan ini menunjukkan bagaimana pewarisan membentuk hierarki yang alami: admin adalah user dengan hak tambahan. Pemeriksaan keamanan di removeBookFromLibrary memastikan integritas data dengan mencegah penghapusan buku yang masih beredar.
Coba sendiri
<?php
require_once 'Admin.php';
// Baca input
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
// TODO: Buat Library
// TODO: Buat Admin dengan ID 1 dan nama "AdminUser"
// TODO: Buat User biasa dengan ID 2 dan nama "RegularUser"
// TODO: Buat Book dengan ISBN dan judul yang diberikan, serta penulis "Test Author"
// TODO: Lakukan operasi berikut dan cetak setiap hasil pada baris baru:
// 1. Minta admin menambahkan buku ke library
// 2. Minta pengguna biasa meminjam buku
// 3. Minta admin mencoba menghapus buku (seharusnya gagal karena buku sedang dipinjam)
// 4. Minta pengguna biasa mengembalikan buku
// 5. Minta admin menghapus buku (seharusnya berhasil sekarang)
// 6. Minta admin mencoba menghapus buku yang sama lagi (seharusnya gagal karena buku tidak ditemukan)
?>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