12 namespace fpoirotte\XRL;
60 throw new \InvalidArgumentException(
'$indent must be a boolean');
63 throw new \InvalidArgumentException(
'$stringTag must be a boolean');
68 $timezone = new \DateTimeZone(@date_default_timezone_get());
70 throw new \InvalidArgumentException($e->getMessage(), $e->getCode());
88 $writer = new \XMLWriter();
89 $writer->openMemory();
91 $writer->setIndent(
true);
92 $writer->startDocument(
'1.0',
'UTF-8');
94 $writer->setIndent(
false);
95 $writer->startDocument();
113 $writer->endDocument();
114 $result = $writer->outputMemory(
true);
116 if (!$this->indent) {
119 if (!strncmp($result,
'<'.
'?xml', 5)) {
120 $pos = strpos($result,
'?'.
'>');
121 if ($pos !==
false) {
122 $result = (string) substr($result, $pos + 2);
126 $result = trim($result);
136 $writer->startElement(
'methodCall');
137 $writer->writeElement(
'methodName', $request->getProcedure());
138 if (count($request->getParams())) {
139 $writer->startElement(
'params');
140 foreach ($request->getParams() as $param) {
141 $writer->startElement(
'param');
142 $writer->startElement(
'value');
143 $param->write($writer, $this->timezone, $this->stringTag);
144 $writer->endElement();
145 $writer->endElement();
147 $writer->endElement();
149 $writer->endElement();
158 $writer->startElement(
'methodResponse');
159 $writer->startElement(
'fault');
160 $writer->startElement(
'value');
162 $exc->write($writer, $this->timezone, $this->stringTag);
163 $writer->endElement();
164 $writer->endElement();
165 $writer->endElement();
173 if (!($response instanceof \fpoirotte\XRL\Types\AbstractType)) {
174 throw new \InvalidArgumentException(
'Invalid response');
178 $writer->startElement(
'methodResponse');
179 $writer->startElement(
'params');
180 $writer->startElement(
'param');
181 $writer->startElement(
'value');
182 $response->write($writer, $this->timezone, $this->stringTag);
183 $writer->endElement();
184 $writer->endElement();
185 $writer->endElement();
186 $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)