테스트 및 통합
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 87번째.
챌린지
쉬움완전한 도서 관리 시스템을 구축하신 것을 축하드립니다! 이제 모든 구성 요소를 하나로 모아 모든 것이 원활하게 작동하는지 확인할 차례입니다. 도서관의 전체 워크플로우를 실행하는 포괄적인 통합 테스트를 작성하게 됩니다.
코드는 다음 다섯 개의 파일로 구성됩니다:
Book.php— 읽기 전용 속성(isbn,title,author), private$isAvailable속성, 그리고isAvailable(),markAsBorrowed(),markAsReturned()메서드를 가진Book클래스입니다.User.php— Book 파일을 포함합니다. 읽기 전용 속성(id,name), private$borrowedBooks배열, 값이3인MAX_BOOKS상수, 그리고 모든 사용자 메서드를 가진User클래스입니다.Library.php— User 파일을 포함합니다. 도서 관리, 대출/반납 기능, 검색 메서드, 그리고removeBook()메서드를 가진Library클래스입니다.Admin.php— Library 파일을 포함합니다.User를 상속받으며addBookToLibrary()및removeBookFromLibrary()메서드를 가진Admin클래스입니다.main.php— Admin 파일을 포함합니다. 여기서 통합 테스트를 실행합니다. 사용자 이름과 검색할 저자 키워드라는 두 개의 입력을 받게 됩니다.도서관 시스템을 설정하세요:
Library인스턴스를 생성합니다.- ID가
1이고 이름이"LibraryAdmin"인Admin을 생성합니다. - ID가
2이고 제공된 사용자 이름을 가진User를 생성합니다.
관리자가 다음 세 권의 책을 추가하도록 하세요:
- ISBN:
"978-0", 제목:"PHP Fundamentals", 저자:"Sarah Johnson" - ISBN:
"978-1", 제목:"OOP Patterns", 저자:"Mike Chen" - ISBN:
"978-2", 제목:"Web Security", 저자:"Sarah Johnson"
그런 다음 아래의 통합 테스트 시퀀스를 실행하고, 각 결과를 새 줄에 출력하세요:
- 사용자가
"978-0"을 대출하도록 합니다. - 사용자가
"978-1"을 대출하도록 합니다. - 두 번째 입력을 사용하여 저자별로 검색하고 그 개수를 출력합니다:
"Books by author: [count]" - 대출 가능한 도서 목록을 가져와 출력합니다:
"Available: [count]" - 사용자가
"978-0"을 반납하도록 합니다. - 대출 가능한 도서 목록을 다시 가져와 출력합니다:
"Available after return: [count]" - 관리자가
"978-0"을 제거하도록 합니다. - 관리자가
"978-0"을 다시 제거하려고 시도하도록 합니다.
이 마지막 챌린지는 관리자의 재고 관리, 사용자의 대출 제한 준수, 정확한 검색 결과 반환, 워크플로우 전반에 걸친 가용성 업데이트 등 전체 시스템이 유기적으로 작동하는지 검증합니다.
직접 해보기
<?php
require_once 'Admin.php';
// 입력 읽기
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));
// TODO: Library 생성
// TODO: ID가 1이고 이름이 "LibraryAdmin"인 Admin 생성
// TODO: ID가 2이고 제공된 사용자 이름을 가진 User 생성
// TODO: 관리자가 다음 세 권의 도서를 추가하도록 함:
// - ISBN: "978-0", 제목: "PHP Fundamentals", 저자: "Sarah Johnson"
// - ISBN: "978-1", 제목: "OOP Patterns", 저자: "Mike Chen"
// - ISBN: "978-2", 제목: "Web Security", 저자: "Sarah Johnson"
// TODO: 통합 테스트 시퀀스:
// 1. 사용자가 "978-0"을 대출하도록 함
// 2. 사용자가 "978-1"을 대출하도록 함
// 3. $searchAuthor를 사용하여 저자별로 검색하고 출력: "Books by author: [count]"
// 4. 대출 가능한 도서를 가져와서 출력: "Available: [count]"
// 5. 사용자가 "978-0"을 반납하도록 함
// 6. 대출 가능한 도서를 다시 가져와서 출력: "Available after return: [count]"
// 7. 관리자가 "978-0"을 삭제하도록 함
// 8. 관리자가 "978-0"을 다시 삭제하려고 시도함
?>객체 지향 프로그래밍의 모든 레슨
8매직 메서드
매직 메서드 소개__toString 및 __debugInfo__get, __set, __isset, __unset__call 및 __callStatic__clone 및 객체 복제__serialize 및 __unserialize요약 - 커스텀 컬렉션