Часть сайта, который я создаю, использует ajax-запрос javascript для запуска PHP-скрипта, который извлекает, анализирует, сортирует и разбивает на страницы и возвращает результаты из XML-файла. Я сделал это довольно простым способом на стороне PHP с переменными, которые извлекают, очищают и переназначают переменные POST, загружают файл SimpleXML и используют запрос xpath для получения необходимых битов, сортировку обрабатывают с помощью LimitIterator SPL и т. Д.
Что мне интересно, так это то, должно ли это быть заключено в объект и, возможно, самое главное, как этот объект должен быть построен.
Код используется с довольно незначительными изменениями (такими как направление сортировки, конкретный запрос xpath и конкретный XML-файл) для ряда различных запросов в разных частях сайта, поэтому я подозреваю, что, возможно, превратив его в повторно используемый объект может быть путь? Как вы думаете? Должен ли я следить за чем-нибудь? Каким-либо особым образом к этому следует подходить (например, должен ли это быть синглтон или я могу передать переменные POST в конструктор, а затем разделить их на различные переназначенные переменные)? По сути, мне интересно, нахожусь ли я на правильном пути, когда делаю это объектно-ориентированным образом, и я думал о чем-то вроде этого (это предназначается для примера с псевдокодом, и мое использование некоторых вещей отключено, я знаю). Пожалуйста, внесите предложения по улучшению, например, правильно ли я использую $ this-> foo или публично / приватно?):
class GetXMLData() {
public $start;
public $end;
public $xmlfile;
public $limited;
private $results;
public function __constructor($_POST, $xmlfile) {
$this->start = sanitize($_POST['start']);
$this->end = sanitize($_POST['end']);
$this->xmlfile = $xmlfile;
}
//load the xml file
private function loadFile($this->file) {
return simplexml_load_file($this->file);
}
private function sorting(){
// an internal sorting function that could use loadFile() perhaps and then return $results to the pagination function?
}
private function paginate($this->results) {
$this->limited = new LimitIterator(new ArrayIterator($this->results), $start, $end);
return $this->limited
}
}
$stuff = new GetXMLData($_POST, $xmlfile);
return $stuff;