Доброго дня Товарищи!Я тут пишу свои всякие поделки, и вот заинтересовался вопросом, а правильный ли я выбрал подход к созданию экземпляра объекта по его ТИПУ? Поясню это на примере:
Допустим, есть у меня к несколько разных вариаций от общего предка, к примеру виды Документов:
//Общий предок
Class Document {
const DOC_DOGOVOR = 1;
const DOC_PISMO = 2; static public getDocByType(int $docType){
switch($docType){
case self::DOC_DOGOVOR:
return new Doc_Dogovor();
break;
case self::DOC_PISMO:
return new Doc_Pismo();
break;
}
return false;
}
}
Class Doc_Dogovor extends Document {
protected static $docType = Document::DOC_DOGOVOR;
//Своя какая-то кухня с свойствами и методами такого
//типа документов ...
}
Class Doc_Pismo extends Document {
protected static $docType = Document::DOC_PISMO;
//Своя какая-то кухня с свойствами и методами такого
//типа документов ...
}
//Получить объект нужного типа (из БД к примеру тип приходит)
$docObj = Document::getDocByType($neededTypeFromDB);
Так вот вопрос собственно в том, насколько оправданно или наоборот плохо и как лучше всего такой тип задачи реализовывать?
А задача значит получение экземпляра объекта указанного типа. Видел, что во всяких автозагрузчиках классов сейчас используется динамическое их получение условно такой схемой что если запрошенного класса нет, он подгружается по имени и дальше также создаётся объект класса, название которого в переменной
$docObj = new $objClassName();