I'm developing a library management system, and basically I have an abstract class "Reader" that extends to "students, teachers and people in general". My question is, I have a class "Requests" and I need to know which "Reader" request the book, to be able to validate this data:
"teachers can only request 10 books simultaneously, the students can only request 5 books in simultaneously and the public in general can oly request 2 books in simultaneously;"
"teachers can keep each book at maximum for 6 months, students for 5 days, and the general public for 1 month;"
"if a teacher has a book for more than three months and there is a need to request it, the teacher must be notified to return the book;"
How can I pass the three type of "Readers" in the __construct, to validate the above data.
class Requests
{
protected $bookRequested;
protected $teacher;
protected $student;
protected $public;
protected $requestDate;
protected $returnDate;
public function __construct(Book $bookRequested, Teacher $teacher, Student $student, GeneralPublic $public)
{
$this->bookRequested = $bookRequested;
$this->teacher = $teacher;
$this->student = $student;
$this->public = $public;
$this->requestDate = date('Y-m-d H:i:s');
$this->returnDate = date('Y-m-d H:i:s');
}
}