Menu
Coddy logo textTech

Test e integrazione

Fa parte della sezione Programmazione orientata agli oggetti del percorso PHP di Coddy. Lezione 87 di 91.

challenge icon

Sfida

Facile

Congratulazioni per aver creato un sistema completo di gestione di una biblioteca! Ora è il momento di riunire tutti i componenti e verificare che tutto funzioni senza intoppi. Creerai un test di integrazione completo che verifica l’intero flusso di lavoro della tua biblioteca.

Organizzerai il codice in cinque file:

  • Book.php: la tua classe Book con proprietà di sola lettura (isbn, title, author), una proprietà privata $isAvailable e i metodi: isAvailable(), markAsBorrowed() e markAsReturned().
  • User.php: includi il file Book. La tua classe User con proprietà di sola lettura (id, name), un array privato $borrowedBooks, una costante MAX_BOOKS con valore 3 e tutti i metodi dell’utente.
  • Library.php: includi il file User. La tua classe Library con le funzionalità di gestione dei libri, prestito e restituzione, i metodi di ricerca e il metodo removeBook().
  • Admin.php: includi il file Library. La tua classe Admin, che estende User, con i metodi addBookToLibrary() e removeBookFromLibrary().
  • main.php: includi il file Admin. È qui che eseguirai il test di integrazione. Riceverai due input: il nome di un utente e una parola chiave per la ricerca dell’autore.

    Configura il tuo sistema bibliotecario:

    • Crea una Library
    • Crea un Admin con ID 1 e nome "LibraryAdmin"
    • Crea un User con ID 2 e il nome utente fornito

    Fai aggiungere all’amministratore questi tre libri:

    • ISBN: "978-0", Titolo: "PHP Fundamentals", Autore: "Sarah Johnson"
    • ISBN: "978-1", Titolo: "OOP Patterns", Autore: "Mike Chen"
    • ISBN: "978-2", Titolo: "Web Security", Autore: "Sarah Johnson"

    Quindi esegui questa sequenza di test di integrazione, stampando ogni risultato su una nuova riga:

    1. Fai prendere in prestito all’utente "978-0"
    2. Fai prendere in prestito all’utente "978-1"
    3. Cerca per autore usando il secondo input e stampa il conteggio: "Books by author: [count]"
    4. Recupera i libri disponibili e stampa: "Available: [count]"
    5. Fai restituire all’utente "978-0"
    6. Recupera di nuovo i libri disponibili e stampa: "Available after return: [count]"
    7. Fai rimuovere all’amministratore "978-0"
    8. Fai provare di nuovo all’amministratore a rimuovere "978-0"

Questa sfida finale verifica che l’intero sistema funzioni in modo coordinato: gli amministratori gestiscono l’inventario, gli utenti prendono in prestito i libri entro i limiti, le ricerche restituiscono risultati accurati e la disponibilità si aggiorna correttamente durante tutto il flusso di lavoro.

Provalo tu

<?php

require_once 'Admin.php';

// Leggi gli input
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Crea una Library

// TODO: Crea un Admin con ID 1 e nome "LibraryAdmin"

// TODO: Crea un User con ID 2 e il nome utente fornito

// TODO: Fai aggiungere all'admin tre libri:
// - ISBN: "978-0", Titolo: "PHP Fundamentals", Autore: "Sarah Johnson"
// - ISBN: "978-1", Titolo: "OOP Patterns", Autore: "Mike Chen"
// - ISBN: "978-2", Titolo: "Web Security", Autore: "Sarah Johnson"

// TODO: Sequenza del test di integrazione:
// 1. Fai prendere in prestito all'utente "978-0"
// 2. Fai prendere in prestito all'utente "978-1"
// 3. Cerca per autore usando $searchAuthor e stampa: "Books by author: [count]"
// 4. Ottieni i libri disponibili e stampa: "Available: [count]"
// 5. Fai restituire all'utente "978-0"
// 6. Ottieni di nuovo i libri disponibili e stampa: "Available after return: [count]"
// 7. Fai rimuovere all'amministratore "978-0"
// 8. Fai provare all'amministratore a rimuovere di nuovo "978-0"

?>

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore PHP online