php xmlwriter — можно ли взять указатель ресурса / файла вместо пути?

Вместо того чтобы делать

$path_out = 'output.xml';

$xw = new XMLWriter();
$xw->openURI($path_out);

Можно ли, используя другой метод или любым другим способом, сделать что-то вроде:

$path_out = 'output.xml';
$fp = open($path_out, 'w');

$xw = new XMLWriter();
$xw->openURI($fp);

1

Решение

Нет, и это действительно отстой. Предполагается, что комбинация XMLWriter / XMLReader должна работать с потоковым режимом, что здорово, но тогда они не могут работать с уже открытыми потоками. Это похоже на серьезную оплошность.

1

Другие решения

Немного поздно, но это должно быть возможно, потому что предоставленный URI поддерживает пользовательский протокол. Таким образом, если вы создаете пользовательскую оболочку, которая оборачивается вокруг ресурса, вы сможете писать напрямую в упакованный ресурс.

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

Итак, для вашего примера вы можете сделать:

$fd = fopen('output.xml', 'w');
StreamWrapper::register($fd, 'output.xml');
$writer = new \XMLWriter();
$writer->openUri('wrapper://output.xml');
2

По вопросам рекламы [email protected]