XMLWriter не работает, хотя phpinfo () и php -m показывают его как включенный - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь использовать XMLWriter для записи базовой таблицы mysql в xml, однако XMLWriter () всегда отображается как «неопределенный класс» в моей IDE или «класс не найден» в режиме отладки laravel и т. Д.

Насколько я понимаю, XMLWriter был базовым с установкой php, и даже мой phpinfo () показывает, что в моей текущей установке php (7.1.23) включен XMLWriter, хотя я не могу его использовать.php -m также подтверждает это.

Какие шаги я могу предпринять, чтобы диагностировать или решить эту проблему?Я сделал основы удаления / переустановки php, перезапуска apache и даже перезапуска своей машины.

Я довольно новичок в laravel / php, поэтому вполне возможно, что я упустил что-то очевидное в использованиисамого XMLWriter.Может кто-нибудь предложить некоторое представление о том, как я могу заставить это работать?

вот код, который я использую для справки

public function downloadXML($option)
{

    switch($option) {
        case 1: $list = Book::all()->toArray();break;
        case 2: $list = Book::get('title')->toArray();break;
        case 3: $list = Book::select('author')->groupBy('author')->get()->toArray();break;
    }

$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument();
$xml->startElement('booklist');
foreach($list as $book)
{
    $xml->startElement('data');
    $xml->writeAttribute('id', $book->id);
    $xml->writeAttribute('title', $book->title);
    $xml->writeAttribute('author', $book->author);
    $xml->endElement();
}
$xml->endElement();
$xml->endDocument();

$content = $xml->outputMemory();
$xml = null;

return response($content)->header('Content-Type', 'text/xml');
}

1 Ответ

0 голосов
/ 07 мая 2019

Я создал пакет, который значительно упростил бы это для вас: https://github.com/mtownsend5512/response-xml

Вы можете сделать что-то вроде этого:

public function downloadXML($option)
{
    switch($option) {
        case 1: $list = Book::all()->toArray();break;
        case 2: $list = Book::get('title')->toArray();break;
        case 3: $list = Book::select('author')->groupBy('author')->get()->toArray();break;
    }

    return response()->xml($list);
}

В случае, если вы хотите изменить способваш XML выглядит, я рекомендую вам изучить ресурсы Laravel .

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