The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (PHP)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Какой верный путь для получения экземпляро объектов по их типу?, Вервер (?), 11-Фев-23, (0) [смотреть все] +9

Сообщения [Сортировка по времени | RSS]


12. "Какой верный путь для получения экземпляро объектов по их типу?"  +6 +/
Сообщение от Вервер (?), 12-Фев-23, 08:59 
> А вообще, зачем вам получать потомков класса через базовый класс, а не
> через конструктор собственно потомка?

Потому что условно в БД хранится тип объекта (к примеру число objType), и мне чтобы через конструктор потомка получать экземпляр объекта - мне надо имя класса этого потомка знать по его objType? И потом делать этот озвученный "динамический трюк" $objItem=new $objClassName();
А как я узнаю, что в переменной $objClassName - корректное название класса?
Эта вот неоднозначность меня смущает. Я не могу понять - как получается в случае динамического варианта, что имя класса - экземпляр объекта которого я хочу получить - верное?

Ответить | Правка | Наверх | Cообщить модератору

18. "Какой верный путь для получения экземпляро объектов по их типу?"  +3 +/
Сообщение от Аноним (18), 15-Фев-23, 13:56 
>А как я узнаю, что в переменной $objClassName - корректное название класса?

А оно надо? Кто пользователь ORM - программист или внешний пользователь, который про эти имена классов вообще знать ничего не должен?

Ответить | Правка | Наверх | Cообщить модератору

21. "Какой верный путь для получения экземпляро объектов по их типу?"  +2 +/
Сообщение от Вервер (?), 15-Фев-23, 19:25 
> А оно надо? Кто пользователь ORM - программист или внешний пользователь, который
> про эти имена классов вообще знать ничего не должен?

Пользователь ORM - получается программист, т.е. Я. Она (типа ORM, хотя конечно нет) для построения логики с сущностями которые реализуют объекты в приложении. Но в любом случае неважно должен внешний пользователь знать про имена классов или нет, как для "динамического" варианта я должен соотнести objTypeID из базы с именем класса, чтобы выполнить итоговою строку

$objItem = new $objClassName();
? Варианта вижу 2:
Или в коде формировать связь objTypeID => objClassName, т.е.
$objTypeData = [
   Doc_Dogovor::OBJ_TYPE => 'Doc_Dogovor',
   Doc_Pismo::OBJ_TYPE => 'Doc_Pismo',
];
......
$objItem = new $objTypeData[$objTypeID]();

Либо в самой БД хранить не objTypeID - а сразу имя класса, но вроде это совсем грязь, хранить куски кода в БД.

Или я чего-то не понимаю?

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру