[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-doc-cvs
Subject:    [DOC-CVS] [doc-en] master: Document the simdjson PECL
From:       Tyson Andre via GitHub <noreply () php ! net>
Date:       2022-10-21 12:49:15
Message-ID: 26vJZTEuV4ZxEelgbQwuD6fz8U9uGAVdxLAZuhBYs () main ! php ! net
[Download RAW message or body]

Author: Tyson Andre (TysonAndre)
Committer: GitHub (web-flow)
Pusher: cmb69
Date: 2022-10-21T14:39:21+02:00

Commit: https://github.com/php/doc-en/commit/3f3362ebcdd1a27cf9c9c751dd5cbe8a6264d1c3
Raw diff: https://github.com/php/doc-en/commit/3f3362ebcdd1a27cf9c9c751dd5cbe8a6264d1c3.diff


Document the simdjson PECL

API documentation and other example snippets are available at
https://github.com/crazyxman/simdjson_php

Closes GH-1900.

Changed paths:
  A  reference/simdjson/book.xml
  A  reference/simdjson/constants.xml
  A  reference/simdjson/functions/simdjson-decode.xml
  A  reference/simdjson/functions/simdjson-is-valid.xml
  A  reference/simdjson/functions/simdjson-key-count.xml
  A  reference/simdjson/functions/simdjson-key-exists.xml
  A  reference/simdjson/functions/simdjson-key-value.xml
  A  reference/simdjson/reference.xml
  A  reference/simdjson/setup.xml
  A  reference/simdjson/simdjsonexception.xml
  A  reference/simdjson/simdjsonvalueerror.xml
  A  reference/simdjson/versions.xml
  M  appendices/extensions.xml


Diff:

diff --git a/appendices/extensions.xml b/appendices/extensions.xml
index 122a9f27e05..86330c6e7be 100644
--- a/appendices/extensions.xml
+++ b/appendices/extensions.xml
@@ -133,6 +133,7 @@
    <listitem><simpara><xref linkend="book.sem"/></simpara></listitem>
    <listitem><simpara><xref linkend="book.session"/></simpara></listitem>
    <listitem><simpara><xref linkend="book.shmop"/></simpara></listitem>
+   <listitem><simpara><xref linkend="book.simdjson"/></simpara></listitem>
    <listitem><simpara><xref linkend="book.simplexml"/></simpara></listitem>
    <listitem><simpara><xref linkend="book.snmp"/></simpara></listitem>
    <listitem><simpara><xref linkend="book.soap"/></simpara></listitem>
@@ -362,6 +363,7 @@
     <listitem><para><xref linkend="book.runkit7"/></para></listitem>
     <listitem><para><xref linkend="book.scoutapm"/></para></listitem>
     <listitem><para><xref linkend="book.seaslog"/></para></listitem>
+    <listitem><para><xref linkend="book.simdjson"/></para></listitem>
     <listitem><para><xref linkend="book.solr"/></para></listitem>
     <listitem><para><xref linkend="book.sqlsrv"/></para></listitem>
     <listitem><para><xref linkend="book.ssdeep"/></para></listitem>
diff --git a/reference/simdjson/book.xml b/reference/simdjson/book.xml
new file mode 100644
index 00000000000..fbb2c2f5a1d
--- /dev/null
+++ b/reference/simdjson/book.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<book xml:id="book.simdjson" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <?phpdoc extension-membership="pecl" ?>
+ <title>Simdjson</title>
+ <titleabbrev>Simdjson</titleabbrev>
+
+ <preface xml:id="intro.simdjson">
+  &reftitle.intro;
+  <para>
+   Provides faster JSON decoding through simdjson bindings for PHP (Single \
Instruction, Multiple Data) +  </para>
+ </preface>
+
+ &reference.simdjson.setup;
+ &reference.simdjson.constants;
+ &reference.simdjson.reference;
+
+ &reference.simdjson.simdjsonexception;
+ &reference.simdjson.simdjsonvalueerror;
+</book>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/constants.xml b/reference/simdjson/constants.xml
new file mode 100644
index 00000000000..7eb006c6038
--- /dev/null
+++ b/reference/simdjson/constants.xml
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="utf-8"?>
+<appendix xml:id="simdjson.constants" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + &reftitle.constants;
+ &extension.constants;
+ <para>
+  <variablelist>
+   <varlistentry xml:id="constant.simdjson-err-capacity">
+    <term>
+     <constant>SIMDJSON_ERR_CAPACITY</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      This parser can't support a document that big.
+      Thrown when parsing a JSON string that is over 4GiB long.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-tape-error">
+    <term>
+     <constant>SIMDJSON_ERR_TAPE_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      The JSON document has an improper structure: missing or superfluous commas, \
braces, missing keys, etc. +     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-depth-error">
+    <term>
+     <constant>SIMDJSON_ERR_DEPTH_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      The JSON document was too deep (too many nested objects and arrays)
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-string-error">
+    <term>
+     <constant>SIMDJSON_ERR_STRING_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Problem while parsing a string
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-t-atom-error">
+    <term>
+     <constant>SIMDJSON_ERR_T_ATOM_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Problem while parsing an atom starting with the letter 't'
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-f-atom-error">
+    <term>
+     <constant>SIMDJSON_ERR_F_ATOM_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Problem while parsing an atom starting with the letter 'f'
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-n-atom-error">
+    <term>
+     <constant>SIMDJSON_ERR_N_ATOM_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Problem while parsing an atom starting with the letter 'n'
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-number-error">
+    <term>
+     <constant>SIMDJSON_ERR_NUMBER_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Problem while parsing a number
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-utf8-error">
+    <term>
+     <constant>SIMDJSON_ERR_UTF8_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      The input is not valid UTF-8
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-uninitialized">
+    <term>
+     <constant>SIMDJSON_ERR_UNINITIALIZED</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      The parser used by simdjson is uninitialized. Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-empty">
+    <term>
+     <constant>SIMDJSON_ERR_EMPTY</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Empty: no JSON found
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-unescaped-chars">
+    <term>
+     <constant>SIMDJSON_ERR_UNESCAPED_CHARS</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Within strings, some characters must be escaped, we found unescaped \
characters +     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-unclosed-string">
+    <term>
+     <constant>SIMDJSON_ERR_UNCLOSED_STRING</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      A string is opened, but never closed.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-unsupported-architecture">
+    <term>
+     <constant>SIMDJSON_ERR_UNSUPPORTED_ARCHITECTURE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      simdjson does not have an implementation supported by this CPU architecture \
(perhaps it's a non-SIMD CPU?). +     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-incorrect-type">
+    <term>
+     <constant>SIMDJSON_ERR_INCORRECT_TYPE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-number-out-of-range">
+    <term>
+     <constant>SIMDJSON_ERR_NUMBER_OUT_OF_RANGE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      The JSON number is too large or too small to fit within the requested type.
+      Note that the C simdjson library is a fork and this error is ignored to match \
php's +      handling of JSON numbers that are too large or too small.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-index-out-of-bounds">
+    <term>
+     <constant>SIMDJSON_ERR_INDEX_OUT_OF_BOUNDS</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-no-such-field">
+    <term>
+     <constant>SIMDJSON_ERR_NO_SUCH_FIELD</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-io-error">
+    <term>
+     <constant>SIMDJSON_ERR_IO_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-invalid-json-pointer">
+    <term>
+     <constant>SIMDJSON_ERR_INVALID_JSON_POINTER</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+      Invalid JSON pointer syntax in <function>simdjson_key_value</function>
+      and other functions accepting a JSON pointer <varname>$key</varname>.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-invalid-uri-fragment">
+    <term>
+     <constant>SIMDJSON_ERR_INVALID_URI_FRAGMENT</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Invalid URI fragment syntax.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-unexpected-error">
+    <term>
+     <constant>SIMDJSON_ERR_UNEXPECTED_ERROR</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Unexpected error, consider reporting this problem as you may have \
found a bug in the simdjson PECL +     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-parser-in-use">
+    <term>
+     <constant>SIMDJSON_ERR_PARSER_IN_USE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-out-of-order-iteration">
+    <term>
+     <constant>SIMDJSON_ERR_OUT_OF_ORDER_ITERATION</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-insufficient-padding">
+    <term>
+     <constant>SIMDJSON_ERR_INSUFFICIENT_PADDING</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-incomplete-array-or-object">
+    <term>
+     <constant>SIMDJSON_ERR_INCOMPLETE_ARRAY_OR_OBJECT</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>JSON document ended early in the middle of an object or array.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-scalar-document-as-value">
+    <term>
+     <constant>SIMDJSON_ERR_SCALAR_DOCUMENT_AS_VALUE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Should not happen.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-out-of-bounds">
+    <term>
+     <constant>SIMDJSON_ERR_OUT_OF_BOUNDS</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Attempted to access location outside of document.
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-trailing-content">
+    <term>
+     <constant>SIMDJSON_ERR_TRAILING_CONTENT</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-key-count-not-countable">
+    <term>
+     <constant>SIMDJSON_ERR_KEY_COUNT_NOT_COUNTABLE</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>
+     </simpara>
+    </listitem>
+   </varlistentry>
+   <varlistentry xml:id="constant.simdjson-err-invalid-property">
+    <term>
+     <constant>SIMDJSON_ERR_INVALID_PROPERTY</constant>
+     (&integer;)
+    </term>
+    <listitem>
+     <simpara>Invalid property name for an <classname>stdClass</classname> when \
decoding a value +     with <function>simdjson_decode</function> or \
<function>simdjson_key_value</function> +     </simpara>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </para>
+</appendix>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/functions/simdjson-decode.xml \
b/reference/simdjson/functions/simdjson-decode.xml new file mode 100644
index 00000000000..f642ab39331
--- /dev/null
+++ b/reference/simdjson/functions/simdjson-decode.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.simdjson-decode" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv>
+  <refname>simdjson_decode</refname>
+  <refpurpose>Decodes a JSON string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>mixed</type><methodname>simdjson_decode</methodname>
+   <methodparam><type>string</type><parameter>json</parameter></methodparam>
+   <methodparam choice="opt"><type>bool</type><parameter>associative</parameter><initializer>&false;</initializer></methodparam>
 +   <methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
 +  </methodsynopsis>
+  <para>
+   Takes a JSON encoded string and converts it into a PHP value.
+   This uses a faster Simultaneous Instruction, Multiple Data implementation
+   than <function>json_decode</function> when it is supported by the computer \
architecture. +  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>json</parameter></term>
+    <listitem>
+     <para>
+      The <parameter>json</parameter> <type>string</type> being decoded.
+     </para>
+     <para>
+      This function only works with UTF-8 encoded strings.
+     </para>
+     <para>
+      This function parses valid inputs which
+      <function>json_decode</function> can decode,
+      provided that they are less than 4 GiB long.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>associative</parameter></term>
+    <listitem>
+     <para>
+      When &true;, JSON objects will be returned as
+      associative &array;s; when &false;, JSON objects will be returned as \
&object;s. +     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>depth</parameter></term>
+    <listitem>
+     <para>
+      Maximum nesting depth of the structure being decoded.
+      The value must be greater than <literal>0</literal>,
+      and less than or equal to <literal>2147483647</literal>.
+
+      Callers should use reasonably small values,
+      because larger depths require more buffer space and will
+      increase the recursion depth, unlike the current \
<function>json_decode</function> implementation. +     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Returns the value encoded in <parameter>json</parameter> in appropriate
+   PHP type. Values <literal>true</literal>, <literal>false</literal> and
+   <literal>null</literal> are returned as &true;, &false; and &null;
+   respectively.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   If <parameter>json</parameter> is invalid, a \
<classname>SimdJsonException</classname> is thrown as of PECL simdjson 2.1.0, +   \
while previously, a <classname>RuntimeException</classname> was thrown. +  </para>
+  <para>
+   If <parameter>depth</parameter> is outside the allowed range,
+   a <classname>SimdJsonValueError</classname> is thrown as of PECL simdjson 3.0.0,
+   while previously, an error of level <constant>E_WARNING</constant> was raised.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title><function>simdjson_decode</function> examples</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$json = '{"a":1,"b":2,"c":3}';
+
+var_dump(simdjson_decode($json));
+var_dump(simdjson_decode($json, true));
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+object(stdClass)#1 (3) {
+  ["a"]=>
+  int(1)
+  ["b"]=>
+  int(2)
+  ["c"]=>
+  int(3)
+}
+array(3) {
+  ["a"]=>
+  int(1)
+  ["b"]=>
+  int(2)
+  ["c"]=>
+  int(3)
+}
+]]>
+    </screen>
+   </example>
+   <example>
+    <title>Accessing invalid object properties</title>
+    <simpara>
+     Accessing elements within an object that contain characters not
+     permitted under PHP's naming convention (e.g. the hyphen) can be
+     accomplished by encapsulating the element name within braces and the \
apostrophe. +    </simpara>
+    <programlisting role="php">
+<![CDATA[
+<?php
+
+$json = '{"foo-bar": 12345}';
+
+$obj = simdjson_decode($json);
+print $obj->{'foo-bar'}; // 12345
+
+?>
+]]>
+    </programlisting>
+   </example>
+   <example>
+    <title>common mistakes using <function>simdjson_decode</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+
+// the following strings are valid JavaScript but not valid JSON
+
+// the name and value must be enclosed in double quotes
+// single quotes are not valid
+$bad_json = "{ 'bar': 'baz' }";
+simdjson_decode($bad_json); // Throws SimdJsonException
+
+// the name must be enclosed in double quotes
+$bad_json = '{ bar: "baz" }';
+simdjson_decode($bad_json); // Throws SimdJsonException
+
+// trailing commas are not allowed
+$bad_json = '{ bar: "baz", }';
+simdjson_decode($bad_json); // Throws SimdJsonException
+
+?>
+]]>
+    </programlisting>
+   </example>
+   <example>
+    <title><parameter>depth</parameter> errors</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+// Encode some data with a maximum depth of 4
+// (array -> array -> array -> string)
+$json = json_encode(
+    [
+        1 => [
+            'English' => [
+                'One',
+                'January'
+            ],
+            'French' => [
+                'Une',
+                'Janvier'
+            ]
+        ]
+    ]
+);
+
+// Show the errors for different depths.
+var_dump(simdjson_decode($json, true, 4));
+try {
+    var_dump(simdjson_decode($json, true, 3));
+} catch (SimdJsonException $e) {
+     echo "Caught: ", $e->getMessage(), "\n";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+array(1) {
+  [1]=>
+  array(2) {
+    ["English"]=>
+    array(2) {
+      [0]=>
+      string(3) "One"
+      [1]=>
+      string(7) "January"
+    }
+    ["French"]=>
+    array(2) {
+      [0]=>
+      string(3) "Une"
+      [1]=>
+      string(7) "Janvier"
+    }
+  }
+}
+Caught: The JSON document was too deep (too many nested objects and arrays)
+]]>
+    </screen>
+   </example>
+   <example>
+    <title><function>simdjson_decode</function> of large integers</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$json = '{"number": 12345678901234567890}';
+
+var_dump(simdjson_decode($json));
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+object(stdClass)#1 (1) {
+  ["number"]=>
+  float(1.2345678901235E+19)
+}
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
+  <note>
+   <para>
+    The JSON spec is not JavaScript, but a subset of JavaScript.
+   </para>
+  </note>
+  <note>
+   <para>
+    In the event of a failure to decode,
+    a <classname>SimdJsonException</classname> is thrown
+    and <methodname>SimdJsonException::getCode</methodname> and
+    <methodname>SimdJsonException::getMessage</methodname> can be used
+    to determine the exact nature of the error.
+   </para>
+  </note>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>json_encode</function></member>
+    <member><function>json_decode</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/functions/simdjson-is-valid.xml \
b/reference/simdjson/functions/simdjson-is-valid.xml new file mode 100644
index 00000000000..e0689636b5a
--- /dev/null
+++ b/reference/simdjson/functions/simdjson-is-valid.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.simdjson-is-valid" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv>
+  <refname>simdjson_is_valid</refname>
+  <refpurpose>Check if a JSON string is valid</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>simdjson_is_valid</methodname>
+   <methodparam><type>string</type><parameter>json</parameter><initializer>&false;</initializer></methodparam>
 +   <methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
 +  </methodsynopsis>
+  <para>
+   Takes a JSON encoded string and returns true if it is valid.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>json</parameter></term>
+    <listitem>
+      <para>
+       The <parameter>json</parameter> <type>string</type> being validated.
+      </para>
+      <para>
+       This function only works with UTF-8 encoded strings.
+      </para>
+      <para>
+       This function validates inputs which
+       <function>json_decode</function> can decode,
+       provided that they are less than 4 GiB long.
+      </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>depth</parameter></term>
+    <listitem>
+     <para>
+      Maximum nesting depth of the structure being validated.
+      The value must be greater than <literal>0</literal>,
+      and less than or equal to <literal>2147483647</literal>.
+
+      Callers should use reasonably small values,
+      because larger depths require more buffer space and will
+      increase the recursion depth, unlike the current \
<function>json_decode</function> implementation. +     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Returns &true; if <parameter>json</parameter> is a valid JSON
+   string, &false; otherwise.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   If <parameter>json</parameter> is longer than 4 GiB, a \
<classname>SimdJsonException</classname> is thrown as of PECL simdjson 2.1.0, +   \
while previously, a <classname>RuntimeException</classname> was thrown. +  </para>
+  <para>
+   If <parameter>depth</parameter> is outside the allowed range,
+   a <classname>SimdJsonValueError</classname> is thrown as of PECL simdjson 3.0.0,
+   while previously, an error of level <constant>E_WARNING</constant> was raised.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title><function>simdjson_decode</function> examples</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$json = '{"a":1,"b":2,"c":3}';
+$invalidJson = '{"a":1,"b":2,"c":';
+
+var_dump(simdjson_is_valid($json));
+var_dump(simdjson_is_valid($invalidJson));
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+bool(true)
+bool(false)
+]]>
+    </screen>
+   </example>
+   <example>
+    <title><parameter>depth</parameter> errors</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+// Encode some data with a maximum depth of 4
+// (array -> array -> array -> string)
+$json = json_encode(
+    [
+        1 => [
+            'English' => [
+                'One',
+                'January'
+            ],
+            'French' => [
+                'Une',
+                'Janvier'
+            ]
+        ]
+    ]
+);
+
+// Show the errors for different depths.
+var_dump(simdjson_is_valid($json, 4));
+var_dump(simdjson_is_valid($json, 3));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+bool(true)
+bool(false)
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
+  <note>
+   <para>
+    The JSON spec is not JavaScript, but a subset of JavaScript.
+   </para>
+  </note>
+  <note>
+   <para>
+    In the event of a failure to decode,
+    a <classname>SimdJsonException</classname> is thrown
+    and <methodname>SimdJsonException::getCode</methodname> and
+    <methodname>SimdJsonException::getMessage</methodname> can be used
+    to determine the exact nature of the error.
+   </para>
+  </note>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>json_encode</function></member>
+    <member><function>json_decode</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/functions/simdjson-key-count.xml \
b/reference/simdjson/functions/simdjson-key-count.xml new file mode 100644
index 00000000000..f0e50c223d4
--- /dev/null
+++ b/reference/simdjson/functions/simdjson-key-count.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.simdjson-key-count" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv>
+  <refname>simdjson_key_count</refname>
+  <refpurpose>Returns the value at a JSON pointer.</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>int</type><methodname>simdjson_key_count</methodname>
+   <methodparam><type>string</type><parameter>json</parameter></methodparam>
+   <methodparam><type>string</type><parameter>key</parameter></methodparam>
+   <methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
 +   <methodparam choice="opt"><type>bool</type><parameter>throw_if_uncountable</parameter><initializer>&false;</initializer></methodparam>
 +  </methodsynopsis>
+  <para>
+   Count the number of elements of the object/array found at the requested JSON \
pointer. +  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>json</parameter></term>
+    <listitem>
+     <para>
+      The <parameter>json</parameter> <type>string</type> being queried.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>key</parameter></term>
+    <listitem>
+     <para>
+      The JSON pointer <type>string</type>.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>depth</parameter></term>
+    <listitem>
+     <para>
+      Maximum nesting depth of the structure being validated.
+      The value must be greater than <literal>0</literal>,
+      and less than or equal to <literal>2147483647</literal>.
+
+      Callers should use reasonably small values,
+      because larger depths require more buffer space and will
+      increase the recursion depth, unlike the current \
<function>json_decode</function> implementation. +     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>throw_if_uncountable</parameter></term>
+    <listitem>
+     <para>
+      When true, a <classname>SimdJsonException</classname> will be thrown
+      instead of returning 0 when the value the JSON pointer points to
+      is neither an object nor an array.
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Returns an &integer; with the number of elements of the value at the given JSON \
pointer. +  </para>
+ </refsect1>
+
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/functions/simdjson-key-exists.xml \
b/reference/simdjson/functions/simdjson-key-exists.xml new file mode 100644
index 00000000000..2c4bb87a719
--- /dev/null
+++ b/reference/simdjson/functions/simdjson-key-exists.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.simdjson-key-exists" \
xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> + \
<refnamediv> +  <refname>simdjson_key_exists</refname>
+  <refpurpose>Check if the JSON contains the value referred to by a JSON \
pointer.</refpurpose> + </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>simdjson_key_exists</methodname>
+   <methodparam><type>string</type><parameter>json</parameter></methodparam>
+   <methodparam><type>string</type><parameter>key</parameter></methodparam>
+   <methodparam choice="opt"><type>int</type><parameter>depth</parameter></methodparam>
 +  </methodsynopsis>
+  <para>
+   Count the number of elements of the object/array found at the requested JSON \
pointer. +  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>json</parameter></term>
+    <listitem>
+     <para>
+      The <parameter>json</parameter> <type>string</type> being queried.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>key</parameter></term>
+    <listitem>
+     <para>
+      The JSON pointer <type>string</type>.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>depth</parameter></term>
+    <listitem>
+     <para>
+      Maximum nesting depth of the structure being validated.
+      The value must be greater than <literal>0</literal>,
+      and less than or equal to <literal>2147483647</literal>.
+
+      Callers should use reasonably small values,
+      because larger depths require more buffer space and will
+      increase the recursion depth, unlike the current \
<function>json_decode</function> implementation. +     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>throw_if_uncountable</parameter></term>
+    <listitem>
+     <para>
+      When true, a <classname>SimdJsonException</classname> will be thrown
+      instead of returning 0 when the value the JSON pointer points to
+      is neither an object nor an array.
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Returns &true; if the JSON pointer is valid and refers to a value found within a \
valid JSON string. +   Returns &false; if the JSON is valid but does not contain the \
JSON pointer. +  </para>
+ </refsect1>
+
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/functions/simdjson-key-value.xml \
b/reference/simdjson/functions/simdjson-key-value.xml new file mode 100644
index 00000000000..941f51d2548
--- /dev/null
+++ b/reference/simdjson/functions/simdjson-key-value.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.simdjson-key-value" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv>
+  <refname>simdjson_key_value</refname>
+  <refpurpose>Decodes the value of a JSON string located at the requested JSON \
pointer.</refpurpose> + </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>mixed</type><methodname>simdjson_key_value</methodname>
+   <methodparam><type>string</type><parameter>json</parameter></methodparam>
+   <methodparam><type>string</type><parameter>key</parameter></methodparam>
+   <methodparam choice="opt"><type>bool</type><parameter>associative</parameter><initializer>&false;</initializer></methodparam>
 +   <methodparam choice="opt"><type>int</type><parameter>depth</parameter><initializer>512</initializer></methodparam>
 +  </methodsynopsis>
+  <para>
+   Decodes and returns the value found at the requested JSON pointer.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <variablelist>
+   <varlistentry>
+    <term><parameter>json</parameter></term>
+    <listitem>
+     <para>
+      The <parameter>json</parameter> <type>string</type> being queried and decoded.
+     </para>
+      <para>
+       This function only works with UTF-8 encoded strings.
+      </para>
+      <para>
+       This function parses valid inputs which
+       <function>json_decode</function> can decode,
+       provided that they are less than 4 GiB long.
+      </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>key</parameter></term>
+    <listitem>
+     <para>
+      The JSON pointer <type>string</type>.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>associative</parameter></term>
+    <listitem>
+     <para>
+      When &true;, JSON objects will be returned as
+      associative &array;s; when &false;, JSON objects will be returned as \
&object;s. +     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><parameter>depth</parameter></term>
+    <listitem>
+     <para>
+      Maximum nesting depth of the structure being decoded.
+      The value must be greater than <literal>0</literal>,
+      and less than or equal to <literal>2147483647</literal>.
+
+      Callers should use reasonably small values,
+      because larger depths require more buffer space and will
+      increase the recursion depth, unlike the current \
<function>json_decode</function> implementation. +     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Returns the part of the value encoded in <parameter>json</parameter>
+   that <parameter>key</parameter> refers to in appropriate
+   PHP type. Values <literal>true</literal>, <literal>false</literal> and
+   <literal>null</literal> are returned as &true;, &false; and &null;
+   respectively.
+  </para>
+ </refsect1>
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   If <parameter>json</parameter> or <parameter>key</parameter> is invalid,
+   or <parameter>key</parameter> could not be found within \
<parameter>json</parameter>, +   a <classname>SimdJsonException</classname> is thrown \
as of PECL simdjson 2.1.0, +   while previously, a \
<classname>RuntimeException</classname> was thrown. +  </para>
+  <para>
+   If <parameter>depth</parameter> is outside the allowed range,
+   a <classname>SimdJsonValueError</classname> is thrown as of PECL simdjson 3.0.0,
+   while previously, an error of level <constant>E_WARNING</constant> was raised.
+  </para>
+ </refsect1>
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>json_encode</function></member>
+    <member><function>simdjson_decode</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/reference.xml b/reference/simdjson/reference.xml
new file mode 100644
index 00000000000..65a6a526155
--- /dev/null
+++ b/reference/simdjson/reference.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<reference xml:id="ref.simdjson" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + <title>Simdjson &Functions;</title>
+
+ &reference.simdjson.entities.functions;
+
+</reference>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/setup.xml b/reference/simdjson/setup.xml
new file mode 100644
index 00000000000..cc16c7160de
--- /dev/null
+++ b/reference/simdjson/setup.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<chapter xml:id="simdjson.setup" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink"> + &reftitle.setup;
+
+ <section xml:id="simdjson.requirements">
+  &reftitle.required;
+  &no.requirement;
+ </section>
+
+ <section xml:id="simdjson.installation">
+  &reftitle.install;
+  <para>
+   &pecl.moved;
+  </para>
+  <para>
+   &pecl.info;
+   <link xlink:href="&url.pecl.package;simdjson">&url.pecl.package;simdjson</link>.
+  </para>
+  <para>
+   &pecl.windows.download.avail;
+  </para>
+ </section>
+</chapter>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/simdjsonexception.xml \
b/reference/simdjson/simdjsonexception.xml new file mode 100644
index 00000000000..1f41d251f8d
--- /dev/null
+++ b/reference/simdjson/simdjsonexception.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<phpdoc:classref xml:id="class.simdjsonexception" \
xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink" \
xmlns:xi="http://www.w3.org/2001/XInclude"> + <title>The SimdJsonException \
class</title> + <titleabbrev>SimdJsonException</titleabbrev>
+
+ <partintro>
+
+<!-- {{{ SimdJsonException intro -->
+  <section xml:id="simdjsonexception.intro">
+   &reftitle.intro;
+   <para>
+    Exception thrown if <function>simdjson_decode</function>,
+    <function>simdjson_key_count</function>,
+    <function>simdjson_key_exists</function>,
+    or <function>simdjson_key_value</function>.
+
+    For possible values see the <link linkend="simdjson.constants">simdjson error \
codes</link> constants. +   </para>
+  </section>
+<!-- }}} -->
+
+  <section xml:id="simdjsonexception.synopsis">
+   &reftitle.classsynopsis;
+
+<!-- {{{ Synopsis -->
+   <classsynopsis>
+    <ooclass><classname>SimdJsonException</classname></ooclass>
+
+<!-- {{{ Class synopsis -->
+    <classsynopsisinfo>
+     <ooclass>
+      <classname>SimdJsonException</classname>
+     </ooclass>
+
+     <ooclass>
+      <modifier>extends</modifier>
+      <classname>RuntimeException</classname>
+     </ooclass>
+
+    </classsynopsisinfo>
+<!-- }}} -->
+    <classsynopsisinfo role="comment">&InheritedProperties;</classsynopsisinfo>
+    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) \
xpointer(id('exception.synopsis')/descendant::db:fieldsynopsis)"><xi:fallback/></xi:include>
 +
+   </classsynopsis>
+<!-- }}} -->
+
+  </section>
+
+ </partintro>
+</phpdoc:classref>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/simdjsonvalueerror.xml \
b/reference/simdjson/simdjsonvalueerror.xml new file mode 100644
index 00000000000..f13d9f06611
--- /dev/null
+++ b/reference/simdjson/simdjsonvalueerror.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<phpdoc:classref xml:id="class.simdjsonvalueerror" \
xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" \
xmlns:xlink="http://www.w3.org/1999/xlink" \
xmlns:xi="http://www.w3.org/2001/XInclude"> + <title>The SimdJsonValueError \
class</title> + <titleabbrev>SimdJsonValueError</titleabbrev>
+
+ <partintro>
+
+<!-- {{{ SimdJsonValueError intro -->
+  <section xml:id="simdjsonvalueerror.intro">
+   &reftitle.intro;
+   <para>
+    A <classname>SimdJsonValueError</classname> is thrown when the
+    type of an argument to a function from simdjson is correct but the value
+    of it is incorrect.
+    E.g. when the JSON decoding <varname>$depth</varname> is not positive or the \
<varname>$depth</varname> is too large. +   </para>
+  </section>
+<!-- }}} -->
+
+  <section xml:id="simdjsonvalueerror.synopsis">
+   &reftitle.classsynopsis;
+
+<!-- {{{ Synopsis -->
+   <classsynopsis>
+    <ooclass><classname>SimdJsonValueError</classname></ooclass>
+
+<!-- {{{ Class synopsis -->
+    <classsynopsisinfo>
+     <ooclass>
+      <classname>SimdJsonValueError</classname>
+     </ooclass>
+
+     <ooclass>
+      <modifier>extends</modifier>
+      <classname>ValueError</classname>
+     </ooclass>
+    </classsynopsisinfo>
+<!-- }}} -->
+    <classsynopsisinfo role="comment">&InheritedProperties;</classsynopsisinfo>
+    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) \
xpointer(id('error.synopsis')/descendant::db:fieldsynopsis)"><xi:fallback/></xi:include>
 +
+    <classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
+    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) \
xpointer(id('class.error')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])"><xi:fallback/></xi:include>
 +
+   </classsynopsis>
+<!-- }}} -->
+
+  </section>
+
+  <section role="changelog">
+   &reftitle.changelog;
+   <informaltable>
+    <tgroup cols="2">
+     <thead>
+      <row>
+       <entry>&Version;</entry>
+       <entry>&Description;</entry>
+      </row>
+     </thead>
+     <tbody>
+      <row>
+       <entry>PHP 8.0.0</entry>
+       <entry>
+        <classname>SimdJsonValueError</classname> extends \
<classname>ValueError</classname> +        now instead of \
<classname>Error</classname>. +       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </section>
+ </partintro>
+
+</phpdoc:classref>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/simdjson/versions.xml b/reference/simdjson/versions.xml
new file mode 100644
index 00000000000..0cbe0d88ed6
--- /dev/null
+++ b/reference/simdjson/versions.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Do NOT translate this file -->
+<versions>
+ <!-- Functions -->
+ <function name='simdjson_is_valid' from='PECL simdjson &gt;= 2.0.0'/>
+ <function name='simdjson_decode' from='PECL simdjson &gt;= 2.0.0'/>
+ <function name='simdjson_key_value' from='PECL simdjson &gt;= 2.0.0'/>
+ <function name='simdjson_key_exists' from='PECL simdjson &gt;= 2.0.0'/>
+ <function name='simdjson_key_count' from='PECL simdjson &gt;= 2.0.0'/>
+ <!-- Classes and Methods -->
+
+ <function name='simdjsonexception' from='PECL simdjson &gt;= 2.1.0'/>
+
+ <function name='simdjsonvalueerror' from='PECL simdjson &gt;= 3.0.0'/>
+</versions>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->

-- 
PHP Documentation Commits Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic