In my current project I am implementing an Model-View-Presenter pattern. Most of my classes that represent domain objects have too many constructor arguments. Take this for example (NOTE: This is just a made-up class, just assume that models need too many arguments):
class Person {
private $id;
private $first_name;
private $middle_name;
private $last_name;
private $birthdate;
private $school_name;
private $school_year_level;
... more properties
public function __constructor($id, $first_name, $middle_name, $last_name, .. etc){
... some code to set the properties
}
}
Suppose this class has many independent values needed for construction (7+ values), what good design can I use? The values are fetched rows from a database.
EDIT: To provide additional info, my model has three layers:
- Models (Value Objects): Just a domain object with properties, and probably some methods for minimal processing of data.
- Data Access Objects: Communicates with the database. CRUD. Creates Model objects from fetched data.
- Service Objects: Provides an interface for the rest of the business logic interacts with data from the database.