Создаю компонент, вроде бы часть функционала реализовал, но понимаю что это сделано на столько коряво.
Поэтому мой вопрос к людям которые много программируют. Я уверен что можно сделать всё намного проще.
Вот смотрите у меня в компоненте идёт плотная связь с API одной игры. Там около 40 урлов на которые делается запрос и для каждого урла от 0 до 4 параметров может передаваться для получения той или иной информации.
Я же сейчас пользуюсь этими данными именно там где мне нужно, делаю запрос, получаю данные, обрабатываю их и передаю в шаблон.
Некоторые данные постоянны, некоторые динамичны, (некоторые есть смысл запилить в базу данных, некоторые можно использовать напрямую).
Давайте теперь чуть на пальцах покажу.
Например вот кусок кода моего корявого)
//Добавляем в массив с персонажем информацию о пользователе добавившем персонажа $charters['userid'] = $user->id; //Зная vCode и keyID мы можем получить информацию characterID и ник персонажа $url = 'https://api.eveonline.com/account/Characters.xml.aspx?keyID='. $charters['keyid']. '&vCode='. $charters['vcode']; //Передаём значение characterID в массив для записи в базу данных. $charters['characterid'] = $chardata['@attributes']['characterID']; $charters['charname'] = $chardata['@attributes']['name']; //Получаем более подробную информациюо персонаже $url2 = 'https://api.eveonline.com/Char/CharacterSheet.xml.aspx?keyID='. $charters['keyid']. '&vCode='. $charters['vcode'].'&characterID='. $charters['characterid']; //Получаем аватар пилота $url2 = 'https://api.eveonline.com/Char/CharacterSheet.xml.aspx?keyID='. $charters['keyid']. '&vCode='. $charters['vcode'].'&characterID='. $charters['characterid']; //Информация которая не изменяется записываем в массив и передаём на запись в базу. $charters['createdata'] = $pilotdata['DoB']; $charters['race'] = $pilotdata['race']; $charters['bloodline'] = $pilotdata['bloodLine']; $charters['ancestry'] = $pilotdata['ancestry']; $charters['gender'] = $pilotdata['gender']; $charters['corporationname'] = $pilotdata['corporationName']; $charters['corporationid'] = $pilotdata['corporationID']; $charters['alliancename'] = $pilotdata['allianceName']; $charters['allianceid'] = $pilotdata['allianceID']; //Запрашиваем у уважаемой евы картинки и так же запихиваем их в масив $charters['charimg'] = 'http://image.eveonline.com/Character/' . $charters['characterid'] . '_256.jpg'; $charters['corporationimg'] = 'http://image.eveonline.com/Corporation/' . $charters['corporationid'] . '_64.png'; $charters['allianceimg'] = 'http://image.eveonline.com/Alliance/' . $charters['allianceid'] . '_64.png'; //Добавляем в масив с данными персонажа информацию о ид группы его корпорации $group_id = $this->model->getGroupcorp($pilotdata['corporationName']); $charters['group_id'] = $group_id['id']; //Выполняем сохранения массива в базу данных. $charterid = $this->model->addCharters($charters); //после сохранения данных делаем редирект на страницу персонажа
Тут обращение к 1 урлу на прямую идёт патом полученная информация из него идёт во второй запрос и так далее патом, складываю всё в 1 масив и заливаю в базу. Это всё данные которые не изменяются, но есть ещё те которые постоянно меняются.
Я например понимаю что можно создать где то отдельные 40 функции и патом обращаться к ним передавая нужные параметры в них, но где их создать и как к ним обращаться? Например если в модели, то по логике разработчиков инстанта, модель только для функций работы с базой, а у меня есть данные которые меняются каждую минуту, их заливать в базу нет смысла.
Думаю мой вопрос понятен, как это сделать более логично и главное ПРАВИЛЬНО. хочу чтоб мой первый компонент был правильным. а не как курица лапой)