У меня есть класс под названием Report.
У меня есть несколько классов, которые наследуются от отчета, ClientReport, ClientVisitReport ...
class Report {
...
public function load($id) {
...
}
}
class ClientReport extends Report {
...
public function load($id) {
parent::load($id);
...
}
}
class ClientVisitReport extends Report {
...
public function load($id) {
parent::load($id);
...
}
}
Я хочу иметь возможность вызывать правильный конструктор из идентификатора, который я даю методу load. Каждый идентификатор имеет свой собственный класс отчета.
В основном я спрашиваю, как я мог сделать это:
$reportObject = new Report(); // reportObject is a Report
$reportObject->load(15678); // report 15678 is a ClientReport, $reportObject is now a ClientReport
Как мне это сделать? Я могу ошибаться в своем дизайне, есть ли лучший способ сделать то, что я хочу?