From a743b3f76cd66215e16b008c235e9d3db9bce503 Mon Sep 17 00:00:00 2001 From: gggeek Date: Mon, 13 Dec 2021 16:33:09 +0000 Subject: [PATCH] improve doc building toolchain: sami 2 phpdocumentor, fix links in manual --- doc/build/composer.json | 11 +-- doc/build/setup_tools.sh | 28 +++++++ doc/manual/phpxmlrpc_manual.adoc | 123 ++++--------------------------- pakefile.php | 21 +++--- src/Helper/Http.php | 7 +- 5 files changed, 61 insertions(+), 129 deletions(-) create mode 100644 doc/build/setup_tools.sh diff --git a/doc/build/composer.json b/doc/build/composer.json index f2275fc..f75f150 100644 --- a/doc/build/composer.json +++ b/doc/build/composer.json @@ -1,23 +1,20 @@ { "name": "phpxmlrpc/phpxmlrpc-doc-toolchain", - "require-dev": { + "require": { "php": "^5.3.0 || ^7.0 || ^8.0", "ext-xsl": "*", "indeyets/pake": "^1.99", "docbook/docbook-xsl": "^1.79", - "sami/sami": "^3.3 || ^4.1" - }, - "config": { - "secure-http": false + "phpdocumentor/phpdocumentor": "^2.9.1 || ^3.1.2" }, "repositories": [ { "type": "package", "package": { "name": "docbook/docbook-xsl", - "version": "1.79.1", + "version": "1.79.2", "dist": { - "url": "https://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.zip/download", + "url": "https://github.com/docbook/xslt10-stylesheets/releases/download/release/1.79.2/docbook-xsl-1.79.2.zip", "type": "zip" } } diff --git a/doc/build/setup_tools.sh b/doc/build/setup_tools.sh new file mode 100644 index 0000000..6a6bb4a --- /dev/null +++ b/doc/build/setup_tools.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Has to be run as a sudoer + +set -e + +sudo DEBIAN_FRONTEND=noninteractive apt-get install -y \ + asciidoctor fop git unzip zip + +PHPPKG=$(dpkg --list | grep php | grep cli | awk '{print $2}') +sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "${PHPPKG/cli/xsl}" + +cd "$(dirname -- $(dirname -- $(dirname -- ${BASH_SOURCE[0]})))" +if [ ! -d build/tools ]; then + mkdir build/tools +fi +if [ -L "$(pwd)/build/tools/composer.json" ]; then + rm "$(pwd)/build/tools/composer.json" +fi +ln -s $(pwd)/doc/build/composer.json $(pwd)/build/tools/composer.json +cd build/tools +# in case we are switching between php versions, aleways reinstall every tool with the corect version... +if [ -f composer.lock ]; then + rm composer.lock +fi +composer install --no-dev +# required as of phpdoc 3.1.2 +sed -r -i -e "s|resource: '%kernel\\.project_dir%/vendor/phpdocumentor/reflection/src/phpDocumentor/Reflection/Php'|resource: '%kernel.project_dir%/../reflection/src/phpDocumentor/Reflection/Php'|g" ./vendor/phpdocumentor/phpdocumentor/config/reflection.yaml diff --git a/doc/manual/phpxmlrpc_manual.adoc b/doc/manual/phpxmlrpc_manual.adoc index f945537..585951c 100644 --- a/doc/manual/phpxmlrpc_manual.adoc +++ b/doc/manual/phpxmlrpc_manual.adoc @@ -17,14 +17,11 @@ Main goals of the project are ease of use, flexibility and completeness. The original author is Edd Dumbill of link:$$http://usefulinc.com/$$[Useful Information Company]. As of the 1.0 stable release, the project was opened to wider involvement and moved to - link:$$http://phpxmlrpc.sourceforge.net/$$[SourceForge]; later, to link:$$https://github.com/gggeek/phpxmlrpc$$[Github] + link:$$https://sourceforge.net/projects/phpxmlrpc/$$[SourceForge]; later, to link:$$https://github.com/gggeek/phpxmlrpc$$[Github] XML-RPC is a format devised by link:$$http://www.userland.com/$$[Userland Software] for achieving remote procedure call via XML using HTTP as the transport. XML-RPC has its own web site, link:$$http://www.xmlrpc.com/$$[www.xmlrpc.com] -A list of XML-RPC implementations for other languages such as Perl and Python can be found on the - link:$$http://www.xmlrpc.com/$$[www.xmlrpc.com] site. - === Acknowledgements Daniel E. Baumann @@ -53,9 +50,9 @@ Peter Kocks Daniel Krippner -{empty}S. Kuip +S. Kuip -{empty}A. Lambert +A. Lambert Frederic Lecointre @@ -131,9 +128,9 @@ debugger/*:: a graphical debugger which can be used to test calls to xmlrpc serv demo/*:: example code for implementing both xmlrpc client and server functionality -doc/*:: the documentation/ this manual, and the list of API changes between versions 3 and 4 +doc/*:: the documentation, including this manual, and the list of API changes between versions 3 and 4 -extras/test.pl, extras/test.py:: Perl and Python programs to exercise server.php to test that some of the methods work. +extras/*:: php utility scripts, such as a benchmark suite and an evironment compatibility checker lib/*:: a compatibility layer for applications which still rely on version 3 of the API @@ -143,7 +140,6 @@ tests/*:: the test suite for the library, written using PhpUnit, and the configu [[bugs]] - == Known Bugs Known bugs are tracked using the link:$$https://github.com/gggeek/phpxmlrpc/issues$$[GitHub issue tracker] @@ -166,15 +162,10 @@ Very little HTTP response checking is performed (e.g. HTTP redirects are not fol header, mandated by the xml-rpc spec, is not validated); cookie support still involves quite a bit of coding on the part of the user. -Support for receiving from servers version 1 cookies (i.e. conforming to RFC 2965) is quite incomplete, and might cause - unforeseen errors. - [[support]] - == Support - === Online Support XML-RPC for PHP is offered "as-is" without any warranty or commitment to support. However, informal advice and help is @@ -185,31 +176,28 @@ XML-RPC for PHP is offered "as-is" without any warranty or commitment to support posted to the link:$$https://github.com/gggeek/phpxmlrpc/issues$$[project's website]. * The __PHP XML-RPC interest mailing list__ is run by the original author. More details - link:$$http://lists.gnomehack.com/mailman/listinfo/phpxmlrpc$$[can be found here]. + link:$$https://lists.usefulinc.com/cgi-bin/mailman/listinfo/phpxmlrpc$$[can be found here]. [[jellyfish]] - === The Jellyfish Book image::progxmlrpc.s.gif[The Jellyfish Book] Together with Simon St.Laurent and Joe Johnston, Edd Dumbill wrote a book on XML-RPC for O'Reilly and Associates on XML-RPC. It features a rather fetching jellyfish on the cover. -Complete details of the book are link:$$http://www.oreilly.com/catalog/progxmlrpc/$$[available from O'Reilly's web site.] +Complete details of the book are link:$$https://www.oreilly.com/library/view/programming-web-services/0596001193/$$[available from O'Reilly's web site.] Edd is responsible for the chapter on PHP, which includes a worked example of creating a forum server, and hooking it up - the O'Reilly's link:$$http://meerkat.oreillynet.com/$$[Meerkat] service in order to allow commenting on news stories + the (now discontinued) O'Reilly's Meerkat service in order to allow commenting on news stories from around the Web. If you've benefited from the effort that has been put into writing this software, then please consider buying the book! [[apidocs]] - == Class documentation - ==== Notes on types ===== int @@ -259,7 +247,6 @@ There is no support for encoding ++null++ them, and uses the same encoding convention (see ...). [[xmlrpcval-creation]] - ==== Xmlrpcval creation The constructor is the normal way to create an @@ -288,12 +275,10 @@ Examples: [source, php] ---- - $myInt = new xmlrpcval(1267, "int"); $myString = new xmlrpcval("Hello, World!", "string"); $myBool = new xmlrpcval(1, "boolean"); $myString2 = new xmlrpcval(1.24, "string"); // note: this will serialize a php float value as xmlrpc string - ---- The fourth constructor form can be used to compose complex @@ -309,7 +294,6 @@ Examples: [source, php] ---- - $myArray = new xmlrpcval( array( new xmlrpcval("Tom"), @@ -331,14 +315,12 @@ $myStruct = new xmlrpcval( "struct") ), "struct"); - ---- See the file ++vardemo.php++ in this distribution for more examples. [[xmlrpc-client]] - ==== Xmlrpc-client creation The constructor accepts one of two possible syntaxes: @@ -350,10 +332,8 @@ xmlrpc_clientnew [source, php] ---- - $client = new xmlrpc_client("http://phpxmlrpc.sourceforge.net/server.php"); $another_client = new xmlrpc_client("https://james:bond@secret.service.com:443/xmlrpcserver?agent=007"); - ---- The second syntax does not allow to express a username and @@ -366,15 +346,12 @@ Here's another example client set up to query Userland's XML-RPC [source, php] ---- - $client = new xmlrpc_client("/RPC2", "betty.userland.com", 80); - ---- The server_port parameter is optional, and if omitted will default to 80 when using HTTP and 443 when using - HTTPS (see the <> method - below). + HTTPS. The transport parameter is optional, and if omitted will default to 'http'. Allowed values are either @@ -396,7 +373,6 @@ The implementation of this class has been kept as simple to use as [source, php] ---- - function foo ($xmlrpcmsg) { ... return new xmlrpcresp($some_xmlrpc_val); @@ -414,7 +390,6 @@ The implementation of this class has been kept as simple to use as "examples.myFunc1" => array("function" => "foo"), "examples.myFunc2" => array("function" => "bar::foobar"), )); - ---- This performs everything you need to do with a server. The single @@ -460,7 +435,6 @@ Here is a more detailed example of what the handler function [source, php] ---- - function foo ($xmlrpcmsg) { global $xmlrpcerruser; // import user errcode base value @@ -479,7 +453,6 @@ Here is a more detailed example of what the handler function return new xmlrpcresp(new xmlrpcval("All's fine!", "string")); } } - ---- See __server.php__ in this distribution for @@ -542,7 +515,6 @@ Look at the __server.php__ example in the distribution to see what a dispatch map looks like. [[signatures]] - ==== Method signatures A signature is a description of a method's return type and its @@ -551,24 +523,24 @@ A signature is a description of a method's return type and its Within a server's dispatch map, each method has an array of possible signatures. Each signature is an array of types. The first entry is the return type. For instance, the method + [source, php] ---- string examples.getStateName(int) - ---- has the signature + [source, php] ---- array($xmlrpcString, $xmlrpcInt) - ---- and, assuming that it is the only possible signature for the method, it might be used like this in server creation: + [source, php] ---- - $findstate_sig = array(array($xmlrpcString, $xmlrpcInt)); $findstate_doc = 'When passed an integer between 1 and 51 returns the @@ -581,11 +553,8 @@ $s = new xmlrpc_server( array( "signature" => $findstate_sig, "docstring" => $findstate_doc ))); - ---- - - Note that method signatures do not allow to check nested parameters, e.g. the number, names and types of the members of a struct param cannot be validated. @@ -598,10 +567,8 @@ If a method that you want to expose has a definite number of used in method signatures as a placeholder for 'any xmlrpc type': - [source, php] ---- - $echoback_sig = array(array($xmlrpcValue, $xmlrpcValue)); $findstate_doc = 'Echoes back to the client the received value, regardless of its type'; @@ -612,7 +579,6 @@ $s = new xmlrpc_server( array( "signature" => $echoback_sig, // this sig guarantees that the method handler will be called with one and only one parameter "docstring" => $echoback_doc ))); - ---- Methods system.listMethods, @@ -622,7 +588,6 @@ Methods system.listMethods, server, and should not be reimplemented (see Reserved Methods below). - ==== Delaying the server response You may want to construct the server, but for some reason not @@ -635,13 +600,11 @@ You may want to construct the server, but for some reason not [source, php] ---- - $s = new xmlrpc_server($myDispMap, 0); // second parameter = 0 prevents automatic servicing of request // ... some code that does other stuff here $s->service(); - ---- Note that the service method will print @@ -659,10 +622,8 @@ To prevent the server from sending HTTP headers back to the Xmlrpc requests retrieved by other means than HTTP POST bodies can also be processed. For example: - [source, php] ---- - $s = new xmlrpc_server(); // not passing a dispatch map prevents automatic servicing of request // ... some code that does other stuff here, including setting dispatch map into server object @@ -670,10 +631,8 @@ $s = new xmlrpc_server(); // not passing a dispatch map prevents automatic servi $resp = $s->service($xmlrpc_request_body, true); // parse a variable instead of POST body, retrieve response payload // ... some code that does other stuff with xml response $resp here - ---- - ==== Modifying the server behaviour A couple of methods / class variables are available to modify @@ -805,7 +764,6 @@ In the same spirit of simplification that inspired the words: [source, php] ---- - function foo($usr_id, $out_lang='en') { global $xmlrpcerruser; @@ -833,7 +791,6 @@ In the same spirit of simplification that inspired the ), false); $s->functions_parameters_type = 'phpvals'; $s->service(); - ---- There are a few things to keep in mind when using this @@ -868,7 +825,6 @@ last but not least, the direct parsing of xml to php values is [[globalvars]] - == Global variables Many global variables are defined in the xmlrpc.inc file. Some of @@ -894,7 +850,6 @@ For convenience the strings representing the XML-RPC types have been encoded as global variables: [source, php] ---- - $xmlrpcI4="i4"; $xmlrpcI8="i8"; $xmlrpcInt="int"; @@ -907,7 +862,6 @@ $xmlrpcArray="array"; $xmlrpcStruct="struct"; $xmlrpcValue="undefined"; $xmlrpcNull="null"; - ---- ==== $xmlrpcTypes, $xmlrpc_valid_parents, $xmlrpcerr, $xmlrpcstr, $xmlrpcerrxml, $xmlrpc_backslash, $_xh, $xml_iso88591_Entities, $xmlEntities, $xmlrpcs_capabilities @@ -918,7 +872,6 @@ Reserved for internal usage. === Variables whose value can be modified [[xmlrpc-defencoding]] - ==== xmlrpc_defencoding $xmlrpc_defencoding"UTF8"This variable defines the character set encoding that will be @@ -955,13 +908,11 @@ $xmlrpc_internalencoding"ISO-8859-1"This variable defines the character set enco [source, php] ---- - "foo_wrapper", "signatures" => ... ))); - ---- [[phpxmlrpcencode]] - ==== php_xmlrpc_encode xmlrpcvalphp_xmlrpc_encodemixed$phpvalarray$optionsReturns an xmlrpcval object populated with the PHP @@ -1171,7 +1114,6 @@ The first will enable the creation of 'particular' xmlrpcval Example: [source, php] ---- - // the easy way to build a complex xml-rpc struct, showing nested base64 value and datetime values $val = php_xmlrpc_encode(array( 'first struct_element: an int' => 666, @@ -1179,7 +1121,6 @@ $val = php_xmlrpc_encode(array( 'third: a base64 element' => new xmlrpcval('hello world', 'base64'), 'fourth: a datetime' => '20060107T01:53:00' ), array('auto_dates')); - ---- ==== php_xmlrpc_decode_xml @@ -1196,11 +1137,9 @@ The options parameter is optional. If Example: [source, php] ---- - $text = 'Hello world'; $val = php_xmlrpc_decode_xml($text); if ($val) echo 'Found a value of type '.$val->kindOf(); else echo 'Found invalid xml'; - ---- === Automatic conversion of php functions into xmlrpc methods (and vice versa) @@ -1296,7 +1235,6 @@ Example usage: [source, php] ---- - $c = new xmlrpc_client('http://phpxmlrpc.sourceforge.net/server.php'); $function = wrap_xmlrpc_method($client, 'examples.getStateName'); @@ -1314,11 +1252,9 @@ else { else echo "OK, state nr. $stateno is $statename"; } - ---- [[wrap_php_function]] - ==== wrap_php_function arraywrap_php_functionstring$funcnamestring$wrapper_function_namearray$extra_optionsGiven a user-defined PHP function, create a PHP 'wrapper' @@ -1411,11 +1347,9 @@ $findstate_sig = wrap_php_function('findstate'); if ($findstate_sig) $methods['examples.getStateName'] = $findstate_sig; $srv = new xmlrpc_server($methods); - ---- [[deprecated]] - === Functions removed from the library The following two functions have been deprecated in version 1.1 of @@ -1435,25 +1369,20 @@ To ease the transition to the new naming scheme and avoid breaking constant `XMLRPC_EPI_ENABLED` will be set to '1' - - The following documentation is kept for historical reference: [[xmlrpcdecode]] - ==== xmlrpc_decode mixedx mlrpc_decode xmlrpcval $xmlrpc_val Alias for php_xmlrpc_decode. [[xmlrpcencode]] - ==== xmlrpc_encode xmlrpcval xmlrpc_encode mixed $phpvalAlias for php_xmlrpc_encode. [[debugging]] - === Debugging aids ==== xmlrpc_debugmsg @@ -1469,7 +1398,6 @@ Use this function in your methods so you can pass back [[reserved]] - == Reserved methods In order to extend the functionality offered by XML-RPC servers @@ -1501,7 +1429,6 @@ The system.listMethods method requires no a method implemented by the server. [[sysmethodsig]] - === system.methodSignature This method takes one parameter, the name of a method implemented @@ -1530,19 +1457,16 @@ If no signature is defined for the method, a not-array value is [source, php] ---- - $v = $resp->value(); if ($v->kindOf() != "array") { // then the method did not have a signature defined } - ---- See the __introspect.php__ demo included in this distribution for an example of using this method. [[sysmethhelp]] - === system.methodHelp This method takes one parameter, the name of a method implemented @@ -1569,14 +1493,12 @@ It returns a response of type array, with each value of the array [[examples]] - == Examples The best examples are to be found in the sample files included with the distribution. Some are included here. [[statename]] - === XML-RPC client: state name query Code to get the corresponding state name from a number (1-50) from @@ -1584,7 +1506,6 @@ Code to get the corresponding state name from a number (1-50) from [source, php] ---- - $m = new xmlrpcmsg('examples.getStateName', array(new xmlrpcval($HTTP_POST_VARS["stateno"], "int"))); $c = new xmlrpc_client("/server.php", "phpxmlrpc.sourceforge.net", 80); @@ -1600,7 +1521,6 @@ Code to get the corresponding state name from a number (1-50) from print "Code: " . htmlentities($r->faultCode()) . "
" . "Reason: '" . htmlentities($r->faultString()) . "'
"; } - ---- === Executing a multicall call @@ -1610,7 +1530,7 @@ To be documented... [[faq]] -[qanda] +[[qanda]] == Frequently Asked Questions ==== How to send custom XML as payload of a method call:: @@ -1691,11 +1611,9 @@ If what you need is to save the responses received from the server [source, php] ---- - $resp = $client->send($msg); if (!$resp->faultCode()) $data_to_be_saved = $resp->serialize(); - ---- Note that this will not be 100% accurate, since the xml generated @@ -1713,13 +1631,11 @@ Note that this will not be 100% accurate, since the xml generated [source, php] ---- - $client = new xmlrpc_client($url); $client->return_type = 'xml'; $resp = $client->send($msg); if (!$resp->faultCode()) $data_to_be_saved = $resp->value(); - ---- Note that using this method the xml response response will not be @@ -1768,7 +1684,6 @@ The code below uses sessions to e.g. let the client store a value [source, php] ---- - $resp = $client->send(new xmlrpcmsg('registervalue', array(new xmlrpcval('foo'), new xmlrpcval('bar')))); if (!$resp->faultCode()) { @@ -1783,7 +1698,6 @@ if (!$resp->faultCode()) $val = $client->send(new xmlrpcmsg('getvalue', array(new xmlrpcval('foo'))); } } - ---- Server-side sessions are handled normally like in any other @@ -1797,7 +1711,6 @@ NB: unlike web browsers, not all xmlrpc clients support usage of [[integration]] - [appendix] == Integration with the PHP xmlrpc extension @@ -1810,7 +1723,6 @@ In short: for the fastest execution possible, you can enable the php [source, php] ---- - /*** client side ***/ $c = new xmlrpc_client('http://phpxmlrpc.sourceforge.net/server.php'); @@ -1837,12 +1749,9 @@ else else echo'Got response: '.htmlentities($v); } - ---- - [[substitution]] - [appendix] == Substitution of the PHP xmlrpc extension @@ -1861,7 +1770,6 @@ Since version 2.1, the PHP-XMLRPC library provides a compatibility [[enough]] - [appendix] == 'Enough of xmlrpcvals!': new style library usage @@ -1873,7 +1781,6 @@ In the meantime, see docs about xmlrpc_client::return_type and [[debugger]] - [appendix] == Usage of the debugger @@ -1905,7 +1812,6 @@ The debugger can take advantage of the JSONRPC library extension, to either to the same directory as the debugger or somewhere in your php include path - * to enable the visual value editing dialog, download the JS-XMLRPC library, and copy somewhere in the web root files __visualeditor.php__, @@ -1914,11 +1820,8 @@ The debugger can take advantage of the JSONRPC library extension, to debugger file __controller.php__ and set appropriately the variable $editorpath. - [[news]] - [appendix] - == Whats's new CAUTION: not all items the following list have (yet) been fully documented, and some might not be present in any other diff --git a/pakefile.php b/pakefile.php index 956cc66..a0aaa6b 100644 --- a/pakefile.php +++ b/pakefile.php @@ -209,6 +209,7 @@ function run_getopts($task=null, $args=array(), $cliOpts=array()) /** * Downloads source code in the build workspace directory, optionally checking out the given branch/tag + * @todo allow using current installation as source, bypassing git clone in workspace - at least for doc generation */ function run_init($task=null, $args=array(), $cliOpts=array()) { @@ -256,18 +257,20 @@ function run_clean_doc() */ function run_doc($task=null, $args=array(), $cliOpts=array()) { + // in + $srcDir = Builder::workspaceDir(); + // out $docDir = Builder::workspaceDir().'/doc'; // API docs - /// @todo sami is anbandonware, whereas phpdocumentor is not. switch back to phpdocumentor - // from phpdoc comments using phpdocumentor - //$cmd = Builder::tool('php'); - //pake_sh("$cmd " . Builder::toolsDir(). "/vendor/bin/phpdoc run -d ".Builder::workspaceDir().'/src'." -t ".Builder::workspaceDir().'/doc/api --title PHP-XMLRPC'); + $cmd = Builder::tool('php'); + pake_sh("$cmd " . Builder::toolsDir(). "/vendor/bin/phpdoc run --cache-folder ".Builder::buildDir()."/.phpdoc -d ".$srcDir.'/src'." -t ".$docDir.'/api --title PHP-XMLRPC'); // from phpdoc comments using Sami - $samiConfig = <<files() @@ -284,18 +287,18 @@ function run_doc($task=null, $args=array(), $cliOpts=array()) EOT; file_put_contents('build/sami_config.php', $samiConfig); $cmd = Builder::tool('php'); - pake_sh("$cmd " . Builder::toolsDir(). "/vendor/bin/sami.php update -vvv build/sami_config.php"); + pake_sh("$cmd " . Builder::toolsDir(). "/vendor/bin/sami.php update -vvv build/sami_config.php");*/ // User Manual // html (single file) from asciidoc $cmd = Builder::tool('asciidoctor'); - pake_sh("$cmd -d book $docDir/manual/phpxmlrpc_manual.adoc"); + pake_sh("$cmd -d book -o $docDir/manual/phpxmlrpc_manual.html $srcDir/doc/manual/phpxmlrpc_manual.adoc"); // then docbook from asciidoc /// @todo create phpxmlrpc_manual.xml with the good version number /// @todo create phpxmlrpc_manual.xml with the date set to the one of last commit (or today?) - pake_sh("$cmd -d book -b docbook $docDir/manual/phpxmlrpc_manual.adoc"); + pake_sh("$cmd -d book -b docbook -o $docDir/manual/phpxmlrpc_manual.xml $srcDir/doc/manual/phpxmlrpc_manual.adoc"); # Other tools for docbook... # @@ -305,7 +308,7 @@ EOT; # convertdoc command for xmlmind xxe editor # convertdoc docb.toHTML xmlrpc_php.xml -u out # - # saxon + xerces xml parser + saxon extensions + xslthl: adds a little syntax highligting + # saxon + xerces xml parser + saxon extensions + xslthl: adds a little syntax highlighting # (bold and italics only, no color) for php source examples... # java \ # -classpath c:\programmi\saxon\saxon.jar\;c:\programmi\saxon\xslthl.jar\;c:\programmi\xerces\xercesImpl.jar\;C:\htdocs\xmlrpc_cvs\docbook-xsl\extensions\saxon65.jar \ diff --git a/src/Helper/Http.php b/src/Helper/Http.php index e3d0364..d12f456 100644 --- a/src/Helper/Http.php +++ b/src/Helper/Http.php @@ -156,9 +156,10 @@ class Http if (count($arr) > 1) { $headerName = strtolower(trim($arr[0])); /// @todo some other headers (the ones that allow a CSV list of values) - /// do allow many values to be passed using multiple header lines. - /// We should add content to $xmlrpc->_xh['headers'][$headerName] - /// instead of replacing it for those... + /// do allow many values to be passed using multiple header lines. + /// We should add content to $xmlrpc->_xh['headers'][$headerName] + /// instead of replacing it for those... + /// @todo should we drop support for rfc2965 (set-cookie2) cookies? It has been obsoleted since 2011 if ($headerName == 'set-cookie' || $headerName == 'set-cookie2') { if ($headerName == 'set-cookie2') { // version 2 cookies: -- 2.43.0