Должен ли я использовать объект для этого взаимодействия JS / PHP? Это выглядит правильно? - PullRequest
1 голос
/ 27 января 2010

Часть сайта, который я создаю, использует 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;

Ответы [ 2 ]

1 голос
/ 27 января 2010

Мне кажется, это нормально, но я бы точно не сделал его синглтоном. Похоже, это распространенное заблуждение с одноэлементным шаблоном: это не для использования, когда вы думаете , вам нужен только один объект, это для случая, когда кратные значения этого объекта вызовут проблемы, и вы нужно , чтобы гарантировать наличие только одного экземпляра.

Кроме того, я бы, вероятно, сделал все переменные закрытыми и использовал бы геттеры и сеттеры всякий раз, когда вам нужен доступ к ним (если вам нужен доступ к ним).

1 голос
/ 27 января 2010

Объекты не имеют ничего общего с POST или взаимодействием с JavaScript или чем-то в этом роде.Это просто способ организации кода на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...