I have a quite a few DTOs like so:
class AccountDTO extends AbstractNestedDTO {
public function __construct(
FirstNameDTO $firstName,
LastNameDTO $lastName,
BirthdayDTO $birthday,
CompanyDTO $company,
EmailDTO $email,
PhoneDTO $phone
) {
}
}
class CompanyDTO extends AbstractNestedDTO {
public function __construct(
CompanyNameDTO $companyName,
CompanyCodeDTO $companyCode,
CompanyVatCodeDTO $companyVatCode,
) {
}
}
They’re all inherited from AbstractNestedDTO
and every property like FirstNameDTO
, LastNameDTO
, BirthdayDTO
, etc. are inherited from AbstractDTO
.
In AbstractNestedDTO
I’m trying to define an “universal” constructor like so:
abstract public function __construct(AbstractDTO ...$dto);
But I’m getting the following Fatal error:
Declaration of HooModulesAccountDTOsCompanyDTO::__construct(HooModulesAccountDTOsCompanyNameDTO $companyName, HooModulesAccountDTOsCompanyCodeDTO $companyCode, HooModulesAccountDTOsCompanyVatCodeDTO $companyVatCode) must be compatible with HooDTOsAbstractNestedDTO::__construct(HooDTOsAbstractDTO ...$dto)
So here is my question: is it possible to define a “universal” constructor that will fit all of my NestedDTO?