From 90c7c63c4c1ef1d41cb992e6379415b32bef5716 Mon Sep 17 00:00:00 2001 From: Christian Schiffler Date: Mon, 23 May 2022 18:44:57 +0200 Subject: [PATCH] Add update script and update property map See #7983 --- bin/update-property-map.php | 142 +++++++ dictionaries/PropertyMap.php | 726 +++++++++++++++++------------------ 2 files changed, 498 insertions(+), 370 deletions(-) create mode 100755 bin/update-property-map.php diff --git a/bin/update-property-map.php b/bin/update-property-map.php new file mode 100755 index 00000000000..9fd399a2204 --- /dev/null +++ b/bin/update-property-map.php @@ -0,0 +1,142 @@ +#!/usr/bin/env php + [ + // documented as mixed in docs. + 'days' => 'false|int', + ] +]; + +set_error_handler(function ($num, $str, $file, $line, $context = null) { + throw new ErrorException($str, 0, $num, $file, $line); +}); + +$docDir = realpath(__DIR__ . '/../build/doc-en'); + +if (false === $docDir) { + echo 'PHP doc not found!' . PHP_EOL; + echo 'Please execute: git clone git@github.com:php/doc-en.git ' . dirname(__DIR__) . '/build/doc-en'; +} + +$files = iterator_to_array( + new RegexIterator( + new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( + $docDir . '/reference', + FilesystemIterator::CURRENT_AS_PATHNAME|FilesystemIterator::SKIP_DOTS + ), + RecursiveIteratorIterator::LEAVES_ONLY + ), + '/.*.xml$/' + ) +); + +$classes = []; +foreach ($files as $file) { + $contents = file_get_contents($file); + // FIXME: find a way to ignore custom entities, for now we strip them. + $contents = preg_replace('#&[a-zA-Z\d.\-_]+;#', '', $contents); + $contents = preg_replace('#%[a-zA-Z\d.\-_]+;#', '', $contents); + $contents = preg_replace('#]+>#', '', $contents); + try { + $simple = new \SimpleXMLElement($contents); + } catch (\Throwable $exception) { + // FIXME: we ignore files with XML errors at the moment because the input XML is not always sober. + // Examples are rpminfo/entities.functions.xml, wkhtmltox/wkhtmltox/bits/web.xml, + // wkhtmltox/wkhtmltox/bits/load.xml + echo sprintf("%1\$s: Ignoring %2\$s: %3\$s\n", $file, get_class($exception), $exception->getMessage()); + continue; + } + + $namespaces = $simple->getNamespaces(); + $simple->registerXPathNamespace('docbook', 'http://docbook.org/ns/docbook'); + foreach ($simple->xpath('//docbook:classsynopsis') as $classSynopsis) { + $classSynopsis->registerXPathNamespace('docbook', 'http://docbook.org/ns/docbook'); + $class = (string) $classSynopsis->xpath('./docbook:ooclass/docbook:classname')[0]; + foreach ($classSynopsis->xpath('//docbook:fieldsynopsis') as $item) { + assert($item instanceof SimpleXMLElement); + $property = (string) $item->varname; + if (null !== ($override = OVERRIDES[$class][$property] ?? null)) { + $classes[$class][$property] = $override; + continue; + } + + $type = $item->type[0]; + if (null === $type) { + continue; + } + assert($type instanceof SimpleXMLElement); + $typeClass = $type->attributes(/*'http://docbook.org/ns/docbook'*/)->class; + if (null === $typeClass) { + $type = (string) $type; + } else if ('union' === (string) $typeClass) { + $types = []; + foreach ($type as $subType) { + $types[] = (string) $subType; + } + $type = implode('|', $types); + } + switch ($type) { + case '': + // Some properties are not properly defined - we ignore them then. + continue 2; + // case 'integer': + // $type = 'int'; + default: + } + $modifier = (string) $item->modifier; + // We do not want to handle constants... I guess?! + if ('const' === $modifier) { + continue; + } + + $classes[$class][$property] = $type; + } + } +} + +function serializeArray(array $array, string $prefix): string +{ + uksort($array, function (string $first, string $second): int { + return strtolower($first) <=> strtolower($second); + }); + $result = "[\n"; + $localPrefix = $prefix . ' '; + foreach ($array as $key => $value) { + $result .= $localPrefix . var_export((string) $key, true) . ' => ' . + (is_array($value) + ? serializeArray($value, $localPrefix) + : var_export($value, true)) . ",\n"; + } + $result .= $prefix . ']'; + + return $result; +} + +$serialized = serializeArray($classes, ''); +file_put_contents( + dirname(__DIR__) . '/dictionaries/PropertyMap.php', + << [ - 'name' => 'string', + 'CommonMark\\Node' => [ + 'endColumn' => 'int', + 'endLine' => 'int', + 'firstChild' => 'Node|null', + 'lastChild' => 'Node|null', + 'next' => 'Node|null', + 'parent' => 'Node|null', + 'previous' => 'Node|null', + 'startColumn' => 'int', + 'startLine' => 'int', + ], + 'CommonMark\\Node\\BulletList' => [ + 'delimiter' => 'int', + 'tight' => 'bool', + ], + 'CommonMark\\Node\\CodeBlock' => [ + 'fence' => 'string|null', + ], + 'CommonMark\\Node\\CustomBlock' => [ + 'onEnter' => 'string|null', + 'onLeave' => 'string|null', + ], + 'CommonMark\\Node\\CustomInline' => [ + 'onEnter' => 'string|null', + 'onLeave' => 'string|null', + ], + 'CommonMark\\Node\\Heading' => [ + 'level' => 'int', ], - 'arrayobject' => [ - 'name' => 'string', + 'CommonMark\\Node\\Image' => [ + 'title' => 'string|null', + 'url' => 'string|null', + ], + 'CommonMark\\Node\\Link' => [ + 'title' => 'string|null', + 'url' => 'string|null', ], - 'collator' => [ + 'CommonMark\\Node\\OrderedList' => [ + 'delimiter' => 'int', + 'start' => 'int', + 'tight' => 'bool', + ], + 'CommonMark\\Node\\Text' => [ + 'literal' => 'string|null', + ], + 'CURLFile' => [ + 'mime' => 'string', 'name' => 'string', + 'postname' => 'string', + ], + 'CURLStringFile' => [ + 'data' => 'string', + 'mime' => 'string', + 'postname' => 'string', ], - 'dateinterval' => [ - 'd' => 'integer', + 'DateInterval' => [ + 'd' => 'int', 'days' => 'false|int', 'f' => 'float', - 'h' => 'integer', - 'i' => 'integer', - 'invert' => 'integer', - 'm' => 'integer', - 's' => 'integer', - 'y' => 'integer', - ], - 'directory' => [ + 'h' => 'int', + 'i' => 'int', + 'invert' => 'int', + 'm' => 'int', + 's' => 'int', + 'y' => 'int', + ], + 'DatePeriod' => [ + 'current' => 'DateTimeInterface', + 'end' => 'DateTimeInterface', + 'include_start_date' => 'bool', + 'interval' => 'DateInterval', + 'recurrences' => 'int', + 'start' => 'DateTimeInterface', + ], + 'Directory' => [ 'handle' => 'resource', 'path' => 'string', ], - 'directoryiterator' => [ + 'DOMAttr' => [ 'name' => 'string', - ], - 'domattr' => [ - 'name' => 'string', - 'ownerelement' => 'DOMElement', - 'schematypeinfo' => 'bool', + 'ownerElement' => 'DOMElement|null', + 'schemaTypeInfo' => 'mixed', 'specified' => 'bool', 'value' => 'string', ], - 'domcharacterdata' => [ + 'DOMCharacterData' => [ 'data' => 'string', 'length' => 'int', - ], - 'domdocument' => [ - 'actualencoding' => 'string', - 'childelementcount' => 'int', - 'config' => 'null', - 'doctype' => 'DOMDocumentType', - 'documentelement' => 'DOMElement', - 'documenturi' => 'string', - 'encoding' => 'string', - 'firstelementchild' => 'DOMElement|null', - 'formatoutput' => 'bool', + 'nextElementSibling' => 'DOMElement|null', + 'previousElementSibling' => 'DOMElement|null', + ], + 'DOMDocument' => [ + 'actualEncoding' => 'string|null', + 'childElementCount' => 'int', + 'config' => 'mixed', + 'doctype' => 'DOMDocumentType|null', + 'documentElement' => 'DOMElement|null', + 'documentURI' => 'string|null', + 'encoding' => 'string|null', + 'firstElementChild' => 'DOMElement|null', + 'formatOutput' => 'bool', 'implementation' => 'DOMImplementation', - 'lastelementchild' => 'DOMElement|null', - 'ownerdocument' => 'null', - 'parentnode' => 'null', - 'preservewhitespace' => 'bool', + 'lastElementChild' => 'DOMElement|null', + 'preserveWhiteSpace' => 'bool', 'recover' => 'bool', - 'resolveexternals' => 'bool', + 'resolveExternals' => 'bool', 'standalone' => 'bool', - 'stricterrorchecking' => 'bool', - 'substituteentities' => 'bool', - 'validateonparse' => 'bool', - 'version' => 'string', - 'xmlencoding' => 'string', - 'xmlstandalone' => 'bool', - 'xmlversion' => 'string', - ], - 'domdocumentfragment' => [ - 'name' => 'string', - ], - 'domdocumenttype' => [ + 'strictErrorChecking' => 'bool', + 'substituteEntities' => 'bool', + 'validateOnParse' => 'bool', + 'version' => 'string|null', + 'xmlEncoding' => 'string|null', + 'xmlStandalone' => 'bool', + 'xmlVersion' => 'string|null', + ], + 'DOMDocumentFragment' => [ + 'childElementCount' => 'int', + 'firstElementChild' => 'DOMElement|null', + 'lastElementChild' => 'DOMElement|null', + ], + 'DOMDocumentType' => [ 'entities' => 'DOMNamedNodeMap', - 'internalsubset' => 'string', + 'internalSubset' => 'string|null', 'name' => 'string', 'notations' => 'DOMNamedNodeMap', - 'publicid' => 'string', - 'systemid' => 'string', - ], - 'domelement' => [ - 'attributes' => 'DOMNamedNodeMap', - 'childelementcount' => 'int', - 'firstelementchild' => 'DOMElement|null', - 'lastelementchild' => 'DOMElement|null', - 'nextelementsibling' => 'DOMElement|null', - 'previouselementsibling' => 'DOMElement|null', - 'schematypeinfo' => 'bool', - 'tagname' => 'string', - ], - 'domentity' => [ - 'actualencoding' => 'string', - 'encoding' => 'string', - 'notationname' => 'string', - 'publicid' => 'string', - 'systemid' => 'string', - 'version' => 'string', - ], - 'domentityreference' => [ - 'name' => 'string', - ], - 'domexception' => [ + 'publicId' => 'string', + 'systemId' => 'string', + ], + 'DOMElement' => [ + 'childElementCount' => 'int', + 'firstElementChild' => 'DOMElement|null', + 'lastElementChild' => 'DOMElement|null', + 'nextElementSibling' => 'DOMElement|null', + 'previousElementSibling' => 'DOMElement|null', + 'schemaTypeInfo' => 'mixed', + 'tagName' => 'string', + ], + 'DOMEntity' => [ + 'actualEncoding' => 'string|null', + 'encoding' => 'string|null', + 'notationName' => 'string|null', + 'publicId' => 'string|null', + 'systemId' => 'string|null', + 'version' => 'string|null', + ], + 'DOMException' => [ 'code' => 'int', ], - 'domimplementation' => [ - 'name' => 'string', - ], - 'domnamednodemap' => [ + 'DOMNamedNodeMap' => [ 'length' => 'int', ], - 'domnode' => [ - 'attributes' => 'null', - 'baseuri' => 'string|null', - 'childnodes' => 'DomNodeList', - 'firstchild' => 'DOMNode|null', - 'lastchild' => 'DOMNode|null', - 'localname' => 'string', - 'namespaceuri' => 'string|null', - 'nextsibling' => 'DOMNode|null', - 'nodename' => 'string', - 'nodetype' => 'int', - 'nodevalue' => 'string|null', - 'ownerdocument' => 'DOMDocument|null', - 'parentnode' => 'DOMNode|null', + 'DOMNode' => [ + 'attributes' => 'DOMNamedNodeMap|null', + 'baseURI' => 'string|null', + 'childNodes' => 'DOMNodeList', + 'firstChild' => 'DOMNode|null', + 'lastChild' => 'DOMNode|null', + 'localName' => 'string|null', + 'namespaceURI' => 'string|null', + 'nextSibling' => 'DOMNode|null', + 'nodeName' => 'string', + 'nodeType' => 'int', + 'nodeValue' => 'string|null', + 'ownerDocument' => 'DOMDocument|null', + 'parentNode' => 'DOMNode|null', 'prefix' => 'string', - 'previoussibling' => 'DOMNode|null', - 'textcontent' => 'string', + 'previousSibling' => 'DOMNode|null', + 'textContent' => 'string', ], - 'domnodelist' => [ + 'DOMNodeList' => [ 'length' => 'int', ], - 'domnotation' => [ - 'publicid' => 'string', - 'systemid' => 'string', + 'DOMNotation' => [ + 'publicId' => 'string', + 'systemId' => 'string', ], - 'domprocessinginstruction' => [ + 'DOMProcessingInstruction' => [ 'data' => 'string', 'target' => 'string', ], - 'domtext' => [ - 'wholetext' => 'string', + 'DOMText' => [ + 'wholeText' => 'string', ], - 'domxpath' => [ + 'DOMXPath' => [ 'document' => 'DOMDocument', + 'registerNodeNamespaces' => 'bool', ], - 'error' => [ - 'code' => 'int', - 'file' => 'string', - 'line' => 'int', - 'message' => 'string', - ], - 'errorexception' => [ - 'severity' => 'int', - ], - 'event' => [ + 'Event' => [ 'pending' => 'bool', ], - 'eventbuffer' => [ - 'contiguous-space' => 'int', + 'EventBuffer' => [ + 'contiguous_space' => 'int', 'length' => 'int', ], - 'eventbufferevent' => [ - 'fd' => 'integer', + 'EventBufferEvent' => [ + 'fd' => 'int', 'input' => 'EventBuffer', 'output' => 'EventBuffer', - 'priority' => 'integer', + 'priority' => 'int', ], - 'eventlistener' => [ + 'EventListener' => [ 'fd' => 'int', ], - 'eventsslcontext' => [ - 'local-cert' => 'string', - 'local-pk' => 'string', + 'EventSslContext' => [ + 'local_cert' => 'string', + 'local_pk' => 'string', ], - 'exception' => [ - 'code' => 'int', - 'file' => 'string', - 'line' => 'int', - 'message' => 'string', - ], - 'filteriterator' => [ - 'name' => 'string', - ], - 'libxmlerror' => [ + 'libXMLError' => [ 'code' => 'int', 'column' => 'int', 'file' => 'string', @@ -214,55 +223,29 @@ 'line' => 'int', 'message' => 'string', ], - 'limititerator' => [ - 'name' => 'string', - ], - 'locale' => [ - 'name' => 'string', - ], - 'mongoclient' => [ - 'connected' => 'boolean', - 'status' => 'string', - ], - 'mongocollection' => [ - 'db' => 'MongoDB', - 'w' => 'integer', - 'wtimeout' => 'integer', + 'MongoDB\\Driver\\Exception\\CommandException' => [ + 'resultDocument' => 'object', ], - 'mongocursor' => [ - 'slaveokay' => 'boolean', - 'timeout' => 'integer', + 'MongoDB\\Driver\\Exception\\RuntimeException' => [ + 'errorLabels' => 'array|null', ], - 'mongodb' => [ - 'w' => 'integer', - 'wtimeout' => 'integer', - ], - 'mongodb-driver-exception-writeexception' => [ - 'writeresult' => 'MongoDBDriverWriteResult', - ], - 'mongoid' => [ - 'id' => 'string', - ], - 'mongoint32' => [ - 'value' => 'string', - ], - 'mongoint64' => [ - 'value' => 'string', + 'MongoDB\\Driver\\Exception\\WriteException' => [ + 'writeResult' => 'MongoDB\\Driver\\WriteResult', ], 'mysqli' => [ - 'affected_rows' => 'int', + 'affected_rows' => 'int|string', 'client_info' => 'string', 'client_version' => 'int', 'connect_errno' => 'int', - 'connect_error' => '?string', + 'connect_error' => 'string|null', 'errno' => 'int', 'error' => 'string', 'error_list' => 'array', 'field_count' => 'int', 'host_info' => 'string', - 'info' => 'string', + 'info' => 'string|null', 'insert_id' => 'int|string', - 'protocol_version' => 'string', + 'protocol_version' => 'int', 'server_info' => 'string', 'server_version' => 'int', 'sqlstate' => 'string', @@ -271,9 +254,9 @@ ], 'mysqli_driver' => [ 'client_info' => 'string', - 'client_version' => 'string', - 'driver_version' => 'string', - 'embedded' => 'string', + 'client_version' => 'int', + 'driver_version' => 'int', + 'embedded' => 'bool', 'reconnect' => 'bool', 'report_mode' => 'int', ], @@ -281,21 +264,21 @@ 'current_field' => 'int', 'field_count' => 'int', 'lengths' => 'array|null', - 'num_rows' => 'int', - 'type' => 'mixed', + 'num_rows' => 'int|string', + 'type' => 'int', ], 'mysqli_sql_exception' => [ 'sqlstate' => 'string', ], 'mysqli_stmt' => [ - 'affected_rows' => 'int', + 'affected_rows' => 'int|string', 'errno' => 'int', 'error' => 'string', 'error_list' => 'array', 'field_count' => 'int', - 'id' => 'mixed', - 'insert_id' => 'int', - 'num_rows' => 'int', + 'id' => 'int', + 'insert_id' => 'int|string', + 'num_rows' => 'int|string', 'param_count' => 'int', 'sqlstate' => 'string', ], @@ -304,203 +287,205 @@ 'message' => 'string', 'sqlstate' => 'string', ], - 'norewinditerator' => [ - 'name' => 'string', - ], - 'normalizer' => [ - 'name' => 'string', - ], - 'numberformatter' => [ - 'name' => 'string', + 'parallel\\Events\\Event' => [ + 'object' => 'object', + 'source' => 'string', + 'type' => 'int', ], - 'parentiterator' => [ - 'name' => 'string', + 'Parle\\ErrorInfo' => [ + 'id' => 'int', + 'position' => 'int', + 'token' => 'mixed', + ], + 'Parle\\Lexer' => [ + 'bol' => 'bool', + 'cursor' => 'int', + 'flags' => 'int', + 'marker' => 'int', + 'state' => 'int', + ], + 'Parle\\Parser' => [ + 'action' => 'int', + 'reduceId' => 'int', + ], + 'Parle\\RLexer' => [ + 'bol' => 'bool', + 'cursor' => 'int', + 'flags' => 'int', + 'marker' => 'int', + 'state' => 'int', + ], + 'Parle\\RParser' => [ + 'action' => 'int', + 'reduceId' => 'int', + ], + 'Parle\\Stack' => [ + 'empty' => 'bool', + 'size' => 'int', + 'top' => 'mixed', + ], + 'Parle\\Token' => [ + 'id' => 'int', + 'value' => 'string', ], - 'pdoexception' => [ + 'PDOException' => [ 'code' => 'int|string', - 'errorinfo' => 'array', - ], - 'pdostatement' => [ - 'querystring' => 'string', - ], - 'phpparser\\node\\expr\\array_' => [ - 'items' => 'array', - ], - 'phpparser\\node\\expr\\arrowfunction' => [ - 'params' => 'list', - ], - 'phpparser\\node\\expr\\closure' => [ - 'params' => 'list', - ], - 'phpparser\\node\\expr\\list_' => [ - 'items' => 'array', - ], - 'phpparser\\node\\expr\\shellexec' => [ - 'parts' => 'list', - ], - 'phpparser\\node\\matcharm' => [ - 'conds' => 'null|non-empty-list', - ], - 'phpparser\\node\\name' => [ - 'parts' => 'non-empty-list', - ], - 'phpparser\\node\\stmt\\case_' => [ - 'stmts' => 'list', + 'errorInfo' => 'array|null', ], - 'phpparser\\node\\stmt\\catch_' => [ - 'stmts' => 'list', + 'PDOStatement' => [ + 'queryString' => 'string', ], - 'phpparser\\node\\stmt\\class_' => [ - 'stmts' => 'list', + 'php_user_filter' => [ + 'filtername' => 'string', + 'params' => 'mixed', + 'stream' => 'resource|null', ], - 'phpparser\\node\\stmt\\do_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\else_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\elseif_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\finally_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\for_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\foreach_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\if_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\interface_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\namespace_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\trait_' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\trycatch' => [ - 'stmts' => 'list', - ], - 'phpparser\\node\\stmt\\while_' => [ - 'stmts' => 'list', - ], - 'rdkafka\\message' => [ - 'err' => 'int', - 'headers' => 'array|null', - 'key' => 'string|null', - 'offset' => 'int', - 'partition' => 'int', - 'payload' => 'string', - 'timestamp' => 'int', - 'topic_name' => 'string', - ], - 'recursivearrayiterator' => [ - 'name' => 'string', + 'PhpToken' => [ + 'id' => 'int', + 'line' => 'int', + 'pos' => 'int', + 'text' => 'string', ], - 'recursivecachingiterator' => [ + 'ReflectionClass' => [ 'name' => 'string', ], - 'recursivedirectoryiterator' => [ + 'ReflectionClassConstant' => [ + 'class' => 'string', 'name' => 'string', ], - 'recursiveregexiterator' => [ + 'ReflectionExtension' => [ 'name' => 'string', ], - 'reflectionclass' => [ + 'ReflectionFunctionAbstract' => [ 'name' => 'string', ], - 'reflectionmethod' => [ + 'ReflectionMethod' => [ 'class' => 'string', - 'name' => 'string', ], - 'reflectionparameter' => [ + 'ReflectionParameter' => [ 'name' => 'string', ], - 'regexiterator' => [ + 'ReflectionProperty' => [ + 'class' => 'string', 'name' => 'string', ], - 'simplexmliterator' => [ + 'ReflectionZendExtension' => [ 'name' => 'string', ], - 'snmp' => [ - 'enum-print' => 'bool', - 'exceptions-enabled' => 'int', + 'RegexIterator' => [ + 'replacement' => 'string|null', + ], + 'SNMP' => [ + 'enum_print' => 'bool', + 'exceptions_enabled' => 'int', 'info' => 'array', - 'max-oids' => 'int', - 'oid-increasing-check' => 'bool', - 'oid-output-format' => 'int', - 'quick-print' => 'bool', + 'max_oids' => 'int|null', + 'oid_increasing_check' => 'bool', + 'oid_output_format' => 'int', + 'quick_print' => 'bool', 'valueretrieval' => 'int', ], - 'snmpexception' => [ + 'SNMPException' => [ 'code' => 'string', ], - 'soapfault' => [ - '_name' => 'string', - 'detail' => 'mixed|null', + 'SoapClient' => [ + '__default_headers' => 'array|null', + '__last_request' => 'string|null', + '__last_request_headers' => 'string|null', + '__last_response' => 'string|null', + '__last_response_headers' => 'string|null', + '__soap_fault' => 'SoapFault|null', + '_classmap' => 'array|null', + '_connection_timeout' => 'int', + '_cookies' => 'array', + '_digest' => 'string|null', + '_encoding' => 'string|null', + '_exceptions' => 'bool', + '_features' => 'int|null', + '_keep_alive' => 'bool', + '_login' => 'string|null', + '_password' => 'string|null', + '_proxy_host' => 'string|null', + '_proxy_login' => 'string|null', + '_proxy_password' => 'string|null', + '_proxy_port' => 'int|null', + '_soap_version' => 'int', + '_ssl_method' => 'int|null', + '_stream_context' => 'resource|null', + '_use_digest' => 'bool', + '_use_proxy' => 'int|null', + '_user_agent' => 'string|null', + 'compression' => 'int|null', + 'httpsocket' => 'resource|null', + 'httpurl' => 'resource|null', + 'location' => 'string|null', + 'sdl' => 'resource|null', + 'style' => 'int|null', + 'trace' => 'bool', + 'typemap' => 'resource|null', + 'uri' => 'string|null', + 'use' => 'int|null', + ], + 'SoapFault' => [ + '_name' => 'string|null', + 'detail' => 'mixed', 'faultactor' => 'string|null', 'faultcode' => 'string|null', 'faultcodens' => 'string|null', 'faultstring' => 'string', - 'headerfault' => 'mixed|null', + 'headerfault' => 'mixed', ], - 'solrdocumentfield' => [ - 'boost' => 'float', + 'SoapHeader' => [ + 'actor' => 'string|int|null', + 'data' => 'mixed', + 'mustUnderstand' => 'bool', 'name' => 'string', - 'values' => 'array', + 'namespace' => 'string', ], - 'solrexception' => [ - 'sourcefile' => 'string', - 'sourceline' => 'integer', - 'zif-name' => 'string', - ], - 'solrresponse' => [ - 'http-digested-response' => 'string', - 'http-raw-request' => 'string', - 'http-raw-request-headers' => 'string', - 'http-raw-response' => 'string', - 'http-raw-response-headers' => 'string', - 'http-request-url' => 'string', - 'http-status' => 'integer', - 'http-status-message' => 'string', - 'parser-mode' => 'integer', - 'success' => 'bool', + 'SoapParam' => [ + 'param_data' => 'mixed', + 'param_name' => 'string', ], - 'spldoublylinkedlist' => [ - 'name' => 'string', + 'SoapServer' => [ + '__soap_fault' => 'SoapFault|null', + 'service' => 'resource', ], - 'splheap' => [ - 'name' => 'string', - ], - 'splmaxheap' => [ - 'name' => 'string', + 'SoapVar' => [ + 'enc_name' => 'string|null', + 'enc_namens' => 'string|null', + 'enc_ns' => 'string|null', + 'enc_stype' => 'string|null', + 'enc_type' => 'int', + 'enc_value' => 'mixed', ], - 'splminheap' => [ - 'name' => 'string', - ], - 'splpriorityqueue' => [ - 'name' => 'string', - ], - 'splqueue' => [ + 'SolrDocumentField' => [ + 'boost' => 'float', 'name' => 'string', + 'values' => 'array', ], - 'splstack' => [ - 'name' => 'string', + 'SolrException' => [ + 'sourcefile' => 'string', + 'sourceline' => 'int', + 'zif_name' => 'string', + ], + 'SolrResponse' => [ + 'http_digested_response' => 'string', + 'http_raw_request' => 'string', + 'http_raw_request_headers' => 'string', + 'http_raw_response' => 'string', + 'http_raw_response_headers' => 'string', + 'http_request_url' => 'string', + 'http_status' => 'int', + 'http_status_message' => 'string', + 'parser_mode' => 'int', + 'success' => 'bool', ], - 'streamwrapper' => [ + 'streamWrapper' => [ 'context' => 'resource', ], - 'tidy' => [ - 'errorbuffer' => 'string', - ], - 'tidynode' => [ + 'tidyNode' => [ 'attribute' => 'array', - 'child' => '?array', + 'child' => 'array', 'column' => 'int', 'id' => 'int', 'line' => 'int', @@ -509,30 +494,31 @@ 'type' => 'int', 'value' => 'string', ], - 'tokyotyrantexception' => [ - 'code' => 'int', + 'Transliterator' => [ + 'id' => 'string', ], - 'xmlreader' => [ - 'attributecount' => 'int', - 'baseuri' => 'string', + 'XMLReader' => [ + 'attributeCount' => 'int', + 'baseURI' => 'string', 'depth' => 'int', - 'hasattributes' => 'bool', - 'hasvalue' => 'bool', - 'isdefault' => 'bool', - 'isemptyelement' => 'bool', - 'localname' => 'string', - 'name' => 'string', - 'namespaceuri' => 'string', - 'nodetype' => 'int', + 'hasAttributes' => 'bool', + 'hasValue' => 'bool', + 'isDefault' => 'bool', + 'isEmptyElement' => 'bool', + 'localName' => 'string', + 'name' => 'string', + 'namespaceURI' => 'string', + 'nodeType' => 'int', 'prefix' => 'string', 'value' => 'string', - 'xmllang' => 'string', + 'xmlLang' => 'string', ], - 'ziparchive' => [ + 'ZipArchive' => [ 'comment' => 'string', 'filename' => 'string', - 'numfiles' => 'int', + 'lastId' => 'int', + 'numFiles' => 'int', 'status' => 'int', - 'statussys' => 'int', + 'statusSys' => 'int', ], ];