60 throw new \InvalidArgumentException(
'$indent must be a boolean');
63 throw new \InvalidArgumentException(
'$stringTag must be a boolean');
67 $timezone = new \DateTimeZone(@date_default_timezone_get());
84 $writer = new \XMLWriter();
85 $writer->openMemory();
87 $writer->setIndent(
true);
88 $writer->startDocument(
'1.0',
'UTF-8');
90 $writer->setIndent(
false);
91 $writer->startDocument();
109 $writer->endDocument();
110 $result = $writer->outputMemory(
true);
112 if (!$this->indent) {
115 if (!strncmp($result,
'<'.
'?xml', 5)) {
116 $pos = strpos($result,
'?'.
'>');
117 if ($pos !==
false) {
118 $result = (string) substr($result, $pos + 2);
122 $result = trim($result);
132 $writer->startElement(
'methodCall');
133 $writer->writeElement(
'methodName', $request->getProcedure());
134 if (count($request->getParams())) {
135 $writer->startElement(
'params');
136 foreach ($request->getParams() as $param) {
137 $writer->startElement(
'param');
138 $writer->startElement(
'value');
139 $param->write($writer, $this->timezone, $this->stringTag);
140 $writer->endElement();
141 $writer->endElement();
143 $writer->endElement();
145 $writer->endElement();
154 $writer->startElement(
'methodResponse');
155 $writer->startElement(
'fault');
156 $writer->startElement(
'value');
158 $exc->write($writer, $this->timezone, $this->stringTag);
159 $writer->endElement();
160 $writer->endElement();
161 $writer->endElement();
169 if (!($response instanceof \
fpoirotte\XRL\Types\AbstractType)) {
170 throw new \InvalidArgumentException(
'Invalid response');
174 $writer->startElement(
'methodResponse');
175 $writer->startElement(
'params');
176 $writer->startElement(
'param');
177 $writer->startElement(
'value');
178 $response->write($writer, $this->timezone, $this->stringTag);
179 $writer->endElement();
180 $writer->endElement();
181 $writer->endElement();
182 $writer->endElement();
$indent
Whether the output should be indented (true) or not (false).
encodeError(\Exception $error)
Interface for an XML-RPC encoder.
An XML-RPC encoder that can produce either compact documents or pretty documents. ...
$timezone
Timezone used to encode date/times.
encodeResponse($response)
An exception that is used to represent XML-RPC errors.
finalizeWrite(\XMLWriter $writer)
__construct(\DateTimeZone $timezone=null, $indent=false, $stringTag=false)
$stringTag
Whether the "<string>" tag should be used (true) or not (false).
A class that represents an XML-RPC request.
encodeRequest(\fpoirotte\XRL\Request $request)