Sympfony2, какова правильная логика хранения и создания связанных объектов?

Задача такова:
Есть несколько сайтов из которых мы должны тягать некие данные. Сайты все одной тематики, подтягивание данных почти схожее у всех, но обработка разная.
Была предложена следующая реализация: абстрактный класс(AbstractSite) от которого наследуются все остальные(Site1, Site2 ... SiteN). Все данные по сайтам должны по сайтам храним в одной таблице с полями Id, Name, URL(по которому будем забирать данные) и slug(имя класса). В абстрактном классе 2 метода getUrlData(получение страницы по урлу) и getParceData(Которы обрабатывает страницу и записывает в определенной структуре).
В контроллере мы достаем все объекты сайтов и в цикле вызываем 2 этих метода.

Все бы хорошо но сложность в том что с симфони знаком только неделю и как правильно реализавать незнаю. Знаю что есть Суперкласс который подходит под нашу реализацию но будет ли метод getRepository('AbstractSite')->findAll подтягивать массив с разными классами не знаю.

Буду очень благодарен помощи и конструктивной критике.
  • Вопрос задан
  • 2500 просмотров
Решения вопроса 1
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
Зачем данные по сайтам хранить в таблице?

Если вам и нужно хранить данные в таблице, то создайте модель Site (таблица site с вашей структурой), потом в контроллёре будете вызывать

$sites = $this->getDoctrine()->getManager()->getRepository('MyBundle:Site')->findAll();

foreach ($sites as $site) {
    $className = $site->getClassName();
    $parser = new $className();
    $parsedContent = parser->getParceData();
}


А абстрактный сласс от которого будут наследоваться другие классы, тут ни при чём. Так как класс модели для создания таблицы в базе совсем другая сущность.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы