From: Michael Wallner Date: Thu, 28 Apr 2022 13:28:29 +0000 (+0200) Subject: prepare 0.2.0 X-Git-Tag: v0.2.0~4 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=3787f011144279a73401b7709676058508735e0e;p=awesomized%2Fext-ion prepare 0.2.0 --- diff --git a/docs/latest b/docs/latest index 374f2a8..aa7e1fb 120000 --- a/docs/latest +++ b/docs/latest @@ -1 +1 @@ -v0.1/ \ No newline at end of file +v0.2/ \ No newline at end of file diff --git a/docs/tutorial/: Tutorial/:5. Symbols, Tables and Catalogs.md b/docs/tutorial/: Tutorial/:5. Symbols, Tables and Catalogs.md index ded06cc..a67cdcd 100644 --- a/docs/tutorial/: Tutorial/:5. Symbols, Tables and Catalogs.md +++ b/docs/tutorial/: Tutorial/:5. Symbols, Tables and Catalogs.md @@ -118,10 +118,10 @@ $catalog = new ion\Catalog; $catalog->add($symtab); /* Use the catalog when writing the data */ -$writer = new class(options: new ion\Writer\Options( +$writer = new class( catalog: $catalog, outputBinary: true -)) extends ion\Writer\Buffer\Writer { +) extends ion\Writer\Buffer\Writer { public function writeRow(Row $row) : void { $this->startContainer(ion\Type::Struct); @@ -225,9 +225,9 @@ When unserializing with known symbols, the symbol IDs will be resolved when usin ```php getBuffer(), [ - "catalog" => $catalog -]); +$reader = new \ion\Reader\Buffer\Reader($writer->getBuffer(), + catalog: $catalog +); $unser = new ion\Unserializer\Unserializer(multiSequence: true); var_dump($unser->unserialize($reader)); diff --git a/docs/v0.2/.htaccess b/docs/v0.2/.htaccess new file mode 100644 index 0000000..aa71b43 --- /dev/null +++ b/docs/v0.2/.htaccess @@ -0,0 +1,11 @@ +Options -Indexes +MultiViews +FollowSymLinks +DirectorySlash Off + +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} -d +RewriteRule ^(.+)$ $1.html [L] + + + ForceType text/x-php + SetHandler default-handler + diff --git a/docs/v0.2/.nojekyll b/docs/v0.2/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/v0.2/AUTHORS b/docs/v0.2/AUTHORS new file mode 100644 index 0000000..67bbd91 --- /dev/null +++ b/docs/v0.2/AUTHORS @@ -0,0 +1 @@ +Michael Wallner diff --git a/docs/v0.2/LICENSE b/docs/v0.2/LICENSE new file mode 100644 index 0000000..816ff40 --- /dev/null +++ b/docs/v0.2/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2013, Michael Wallner . +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/docs/v0.2/VERSION b/docs/v0.2/VERSION new file mode 100644 index 0000000..9f55b2c --- /dev/null +++ b/docs/v0.2/VERSION @@ -0,0 +1 @@ +3.0 diff --git a/docs/v0.2/favicon.ico b/docs/v0.2/favicon.ico new file mode 100644 index 0000000..d28351c Binary files /dev/null and b/docs/v0.2/favicon.ico differ diff --git a/docs/v0.2/index.css b/docs/v0.2/index.css new file mode 100644 index 0000000..02cbbe7 --- /dev/null +++ b/docs/v0.2/index.css @@ -0,0 +1,348 @@ +html { + font-size: 16px; +} +html, body{ + height: 100%; + min-height: 100%; +} +body, code { + font-family: + 'DejaVu Sans Mono', 'Liberation Mono', + 'Andale Mono', Monaco, Menlo, + monospace; + /* + Mitra Mono has broken kerning? + Ubuntu Mono is too small! + */ +} +body { + line-height: 1.5; + font-size: 1.1em; + margin: 0; + padding: 0; + color: #3f3f3f; +} + +div.page { + margin: auto; +/* max-width: 1200px; +*/ min-height: 100%; + padding-bottom: 5em; + box-shadow: 0 0 20px 10px rgba(0, 0, 0, 0.5); +} + +div.page>* { + margin-left: 1em; +} +div.page>footer { + margin-left: 0; +} +div.page>ul, div.page>div>ul { + margin-left: 2em; +} + +.sidebar { + float: right; + background: #f0f0f0; + border-bottom-left-radius: 10px; + padding: 0; + width: auto; + min-width: 200px; + padding-right: 1em; + padding-bottom: 1em; + margin-bottom: 1em; +} +.sidebar>ul { +} +.sidebar ul { + margin-left: 1em; + margin-top: .5em; + margin-bottom: 0; + padding: 0; + list-style-type: none; +} + +.sidebar .edit { + display: block; + position: relative; + top: 2em; + right: 0; + transform: rotate(45deg); + text-decoration: none; + font-weight: bold; + text-shadow: 0 0 5px red; + float: right; +} + +.sidebar .edit a { + color: white !important; +} +code { + border-radius: 2px; + padding: 0px 2px 2px 2px; + background: #f0f0f0; + color: #606060; + box-shadow: 0 0 1px #999; +} + +code code { + display: inline; + padding: 0; + background: transparent; + border: none; + box-shadow: none; +} + +pre>code { + display: inline-block; + padding: 1em; + min-width: 50%; + line-height: 1.2; +} + +pre>code, pre>code code { + background: #333; + color: ghostwhite; +} +pre>code .comment { + color: darkorange !important; +} +pre>code .string { + color: darkseagreen !important; +} +pre>code .keyword { + color: darkgray !important; +} + +p, pre, table, dl { + margin: 1em 2em; + margin-left: 2em !important; +} + +pre>code, table, dl { + margin-bottom: 2em !important; +} + +li>p { + margin: 1em 0; +} + +blockquote { + border-top: 1px solid #800000; + border-bottom: 1px solid #800000; + background: #ffe4e1; + margin: 2em 0 !important; +} + +ul { + margin-top: 1em; + margin-bottom: 2em; +} +ol { + list-style-type: none; +} +ol ul { + margin-top: 0; + margin-bottom: 0; +} +ol li { + margin-bottom: 0; +} +ol>li { + font-weight: bold; + margin-bottom: .5em; +} +ol>li>* { + font-weight: normal; +} +li { + margin-bottom: .5em; +} +a, h1 code>a { + color: #2f4f4f; +} +a:hover { + text-decoration: none; +} +a[href^="http:"]:after, a[href^="https:"]:after { + content: " ⬈"; +} +code>a { + text-decoration: none; +} +code a[href^="http:"]:after, code a[href^="https:"]:after { + content: ""; +} + +a.permalink { + position: relative; + top: 0; + right: 0; + color: #999999; + opacity: 0.25; +} +.blink { + color: red !important; +} +.fade-out { + opacity: 0; +} +.fade-in { + opacity: 1; +} +.trans-slow { + transition: all 600ms; +} +.trans-fast { + transition: all 200ms; +} + +.var { + color: #800000; +} +.constant { + color: #2e8b57; +} + +h1, th, footer { + background: #708090; + color: #f5f5dc; +} + +h1, footer { + margin: 0; +/* max-width: 1200px; +*/ padding: 1em; +} + +h1 { + line-height: 1.5; + margin-left: 0 !important; + padding-left: 2em; +} +h1 code { + font-weight: normal; + font-size: .9em; + line-height: 1.33; +} +h1 a.permalink { + left: -.8em; + margin-right: -.6em; +} + +div.page>h3, div.page>div>h3 { + margin-left: 1.25em; +} +div.page>h4, div.page>div>h4 { + margin-left: 1.5em; +} +div.page>h5, div.page>div>h5 { + margin-left: 1.75em; +} +div.page>h6, div.page>div>h6 { + margin-left: 2em; +} + +h1 .constant, pre>code .consant { + color: #98fb98; +} + +h1 .var, pre>code .var { + color: #f4a460; +} +h1 { + font-size: 125%; +} +h2 { + font-size: 120%; +} +h3 { + font-size: 110%; +} +h4 { + font-size: 100%; +} +footer a, h1 a, pre>code a { + color: #b0e0e6; +} + +ul.sub-entries li { + list-style: circle; + margin-bottom: 2em; +} +li h3 a { + text-decoration: none; +} +li h3 a:hover { + text-decoration: underline; +} + +.comments { + width: 80%; +} +.comments .activator { + width: 80%; + display: inline-block; + margin: auto; + padding: 1em; + background-color: slategrey; + color: white; + font-size: 1em; + font-weight: bold; + border: 0; + border-radius: 2px; + box-shadow: 0 0 4px #999; +} + +footer { + font-size: smaller; + text-align: center; + clear: both; + position: fixed; + bottom: 0; + width: 100%; + padding: 0; + transition: margin-bottom 2s ease 0.1s; +} +footer.hidden { + margin-bottom: -10em; + transition: margin-bottom 2s ease 0.1s; +} + +footer ul { + margin: 0; + padding: 1em 0; +} + +footer li { + list-style-type: none; + display: inline-block; + margin: 0 1em; +} + +footer a { + text-decoration: none; +} + +footer a:hover { + text-decoration: underline; +} + +table { + border-collapse: collapse; +} +th, td { + padding: .4em; + border-bottom: 1px solid rgba(112, 128, 144, 0.1); +} +dt { + font-weight: bold; + margin-top: 1em; +} +dd { + line-height: 1.33; + margin-left: 1em; +} +h1, footer, table, .sidebar, pre>code { + box-shadow: 0 0 4px #708090; +} diff --git a/docs/v0.2/index.html b/docs/v0.2/index.html new file mode 100644 index 0000000..19b7c51 --- /dev/null +++ b/docs/v0.2/index.html @@ -0,0 +1,70 @@ + + + + + + mdref + + + + + + + + + + +
+ + +

+mdref

+ pecl/ion +

+

PHP extension wrapping amzn/ion-c. +See the Amazon ION specification.

+
+

Download the Stub file:

+
    +
  • + ion.stub.php
    + + Last modified: + 2022-04-28 10:37:35 UTC +
  • +
+
+ + + + +
+ + diff --git a/docs/v0.2/index.js b/docs/v0.2/index.js new file mode 100644 index 0000000..e9b65c1 --- /dev/null +++ b/docs/v0.2/index.js @@ -0,0 +1,49 @@ +"use strict"; + +document.addEventListener("DOMContentLoaded", function() { + const doTransition = function(e, trans, state, speed) { + e.classList.remove(trans + "-in", trans + "-out", "trans-slow", "trans-fast"); + e.classList.add(trans + "-" + state, "trans-" + speed); + return (cb) => setTimeout(cb, speed === "slow" ? 600 : 200); + }; + const letElementBlink = function(e, last) { + setTimeout(() => doTransition(e, "fade", "out", "fast")(function() { + e.classList.add("blink"); + doTransition(e, "fade", "in", "fast")(function() { + e.classList.remove("blink"); + doTransition(e, "fade", "out", "slow")(function () { + doTransition(e, "fade", "in", "slow"); + }); + }); + }), 200); + }; + const onHashChange = function() { + if (location.hash.length > 1) { + let hash = decodeURIComponent(location.hash.substring(1)); + let e = document.getElementById(hash) || document.getElementById(location.hash.substring(1)); + if (e) { + letElementBlink(e); + } else { + if (hash.substring(hash.length-1) === "*") { + hash = hash.substring(0, hash.length-1); + } + let klass = (hash.substring(0,1) === "$") ? "var" : "constant"; + let scrolled = false; + Array.prototype.forEach.call(document.getElementsByClassName(klass), function(e) { + if (e.textContent.substring(0, hash.length) !== hash) { + return; + } + if (!scrolled) { + scrolled = true; + window.scrollTo(0, e.offsetTop > 64 ? e.offsetTop - 64 : 0); + } + letElementBlink(e); + }); + } + } + }; + + onHashChange(); + window.addEventListener("hashchange", onHashChange); + setTimeout(()=>document.getElementsByTagName("footer")[0].classList.add("hidden"), 1000); +}) diff --git a/docs/v0.2/ion.html b/docs/v0.2/ion.html new file mode 100644 index 0000000..7a544fb --- /dev/null +++ b/docs/v0.2/ion.html @@ -0,0 +1,477 @@ + + + + + + ion - + mdref + + + + + + + + + + +
+ + +

+pecl/ion

About: +

PHP extension wrapping amzn/ion-c. +See the Amazon ION specification.

License: +

BSD-2-Clause; +see spdx.org.

Installation: +

Dependencies: +

Required: +

    +
  • PHP-8.1 +
      +
    • ext/date (standard)
    • +
    • ext/spl (standard)
    • +
    +
  • +

Optional: +

Trinity: +


+phpize
./configure # --with-php-config=<path/to/php-config>
make # -j$(nproc)
sudo make install # INSTALL=install
+

PECL +


+pecl install ion
+

PHARext +

Watch out for PECL replicates +and pharext packages attached to releases.

Try with Docker: +


+docker build -t php-ion
docker run --rm php-ion -r 'echo ion\serialize(ion\Symbol\PHP::asTable());'
+

Editor Stub: +

See ion.stub.php.

Known Issues: +

Due to private internal state of ion-c's readers and writers, +instances of the following PHP classes cannot be cloned:

Editor Stub: +

This extension provides a stub file four your editor's auto-completion.

+

Download the Stub file:

+
    +
  • + ion.stub.php
    + + Last modified: + 2022-04-28 10:37:35 UTC +
  • +
+

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion.stub.php b/docs/v0.2/ion.stub.php new file mode 100644 index 0000000..c41b77a --- /dev/null +++ b/docs/v0.2/ion.stub.php @@ -0,0 +1,1105 @@ + + + + + + ★ Contributing - + mdref + + + + + + + + + + +
+ + +

+Contributor Code of Conduct

As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality.

Examples of unacceptable behavior by participants include:

    +
  • The use of sexualized language or imagery
  • +
  • Personal attacks
  • +
  • Trolling or insulting/derogatory comments
  • +
  • Public or private harassment
  • +
  • Publishing other's private information, such as physical or electronic +addresses, without explicit permission
  • +
  • Other unethical or unprofessional conduct.
  • +

Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct. By adopting this Code of Conduct, project +maintainers commit themselves to fairly and consistently applying these +principles to every aspect of managing this project. Project maintainers who do +not follow or enforce the Code of Conduct may be permanently removed from the +project team.

This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the +Contributor Covenant, version 1.2.0, +available at http://contributor-covenant.org/version/1/2/0/.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Security.html b/docs/v0.2/ion/: Security.html new file mode 100644 index 0000000..5acb9fc --- /dev/null +++ b/docs/v0.2/ion/: Security.html @@ -0,0 +1,144 @@ + + + + + + ★ Security - + mdref + + + + + + + + + + +
+ + +

+Security Policy

Supported Versions +

This project is still in its early development stages, so please consider +any release not explicitly labeled as stable as experimental.

+ + + + + + + + + + + + +
VersionSupported
0.x✓

Reporting a Vulnerability +

If you find a security vulnerability, please refrain from creating a +public issue on Github, but rather contact me directly at mike@php.net +or another suitable private contact method.

Any past vulnerabilities should be found in release changelogs after they +have been fixed.

This is free and open source software provided under the the terms of +the 2-Clause-BSD-License, see the LICENSE file. +Thus, honor and goodwill is all being offered for reporting +-- or even fixing -- any vulnerability.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial.html b/docs/v0.2/ion/: Tutorial.html new file mode 100644 index 0000000..ecff0ac --- /dev/null +++ b/docs/v0.2/ion/: Tutorial.html @@ -0,0 +1,166 @@ + + + + + + ★ Tutorial - + mdref + + + + + + + + + + +
+ + +

+Tutorial

Welcome to the ext-ion tutorial. We'll look into what Amazon's ION format is and how to use it from within PHP.

    +
  1. ★1. Getting started +
  2. +
  3. ★2. What is ion? +
  4. +
  5. ★3. Standard Datatypes +
  6. +
  7. ★4. Special Datatypes +
  8. +
  9. ★5. Symbols, Tables and Catalogs +
  10. +
+

Parts of this documentation are replicated verbatim of the official Amazon ION documentation licensed under the Apache 2.0 License.

+

+                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS
+
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial/:1. Getting started.html b/docs/v0.2/ion/: Tutorial/:1. Getting started.html new file mode 100644 index 0000000..b33a3b2 --- /dev/null +++ b/docs/v0.2/ion/: Tutorial/:1. Getting started.html @@ -0,0 +1,147 @@ + + + + + + ★1. Getting started - + mdref + + + + + + + + + + +
+ + +

+Getting started

The PHP extension for Ion requires PHP version 8.1 or greater, see the Install section.

Why Ion? +

    +
  • Ion provides dual-format interoperability, which enables users to take advantage of the ease of use of the text format while capitalizing on the efficiency of the binary format. The text form is easy to prototype, test, and debug, while the binary format saves space and parsing effort.
  • +
  • Ion’s rich type system extends JSON’s, adding support for types that make Ion suitable for a wider variety of uses, including precision-sensitive applications and portability across languages and runtimes.
  • +
  • Ion is a self-describing format, giving its readers and writers the flexibility to exchange Ion data without needing to agree on a schema in advance. Ion’s “open-content” supports discovery, deep component chaining, and schema evolution.
  • +
  • Because most data is read more often than it is written, Ion defines a read-optimized binary format.
  • +

Dual-format interoperability +

Applications can seamlessly consume Ion data in either its text or binary forms without loss of data fidelity. While the expectation is that most Ion data is in binary form, the text form promotes human readability, simplifying discovery and diagnosis.

Notably, the text format is a superset of JSON, making all JSON data valid Ion data. You probably already know how to read and author Ion.

Ease of use +

Like JSON, Ion’s text format is concise and clearly legible. It is intelligible to humans and may be edited using familiar tools like a text editor. This makes Ion well-suited to rapid prototyping: developers can quickly mock up the their data in text Ion, knowing that their application will ultimately seamlessly process the more efficient binary Ion format. Once the application is up and running, the users can debug it by intercepting the binary Ion data and converting it to text Ion with full fidelity. After analysis, hand-edited records can be re-inserted into a processing pipeline as needed to support debugging and prototyping.

Text-only formats are more expensive to parse, which is why Ion offers the option of the length-prefixed binary format. This binary format supports rapid skip-scanning of data to materialize only key values within Ion streams.

Seamless transcoding +

Ion’s interoperable formats avoid the kinds of semantic mismatches encountered when attempting to mix and match separate text and binary formats.

Standalone binary formats such as CBOR sacrifice human-readability in favor of an encoding that is more compact and efficient to parse. Although CBOR is based on JSON, transcoding between the two is not always straightforward because CBOR’s more expressive types do not necessarily map cleanly to JSON types. For example, CBOR’s bignum must be base-64 encoded and represented as a JSON string in order to avoid numeric overflow when read by a JSON parser, while a CBOR map may be directly converted to a JSON object only if all its keys are UTF-8 strings.

Rich type system +

Ion’s type system is a superset of JSON’s: in addition to strings, booleans, arrays (lists), objects (structs), and nulls, Ion adds support for arbitrary-precision timestamps, embedded binary values (blobs and clobs), and symbolic expressions. Ion also expands JSON’s number specification by defining distinct types for arbitrary-size integers, IEEE-754 binary floating point numbers, and infinite-precision decimals. Decimals are particularly useful for precision-sensitive applications such as financial transaction record-keeping. JSON’s number type is underspecified; in practice, many implementations represent all JSON numbers as fixed-precision base-2 floats, which are subject to rounding errors and other loss of precision.

Timestamps +

Ion timestamps are W3C-compliant representations of calendar dates and time, supporting variable precision including year, month, day, hours, minutes, seconds, and fractional seconds. Ion timestamps may optionally encode a time zone offset.

By defining timestamps as a distinct type, Ion eliminated the ambiguity involved with representing dates as strings, as the semantics are clearly defined. Unlike a number, which counts from some “epoch”, arbitrary precision timestamps also allow applications to represent deliberate ambiguity.

Blobs and Clobs +

Ion’s blob and clob types allow applications to tunnel binary data through Ion. This allows such applications to transmit opaque binary payloads (e.g. media, code, and non-UTF-8 text) in Ion without the need to apply additional processing to the payloads to make them conform to a different Ion type.

For example, a blob could be used to transmit a bitmap image, while a clob could be used to transmit Shift JIS text or an XML payload.

Symbolic expressions +

The Ion specification defines a distinct syntax for symbolic expressions (S-expressions), but does not define how they should be processed. This allows applications to use S-expressions to convey domain-specific semantics in a first-class Ion type.

Formats that lack S-expressions as a first-class type are often left to choose between two imperfect options: adding a pre-processor (e.g. Jsonnet on top of JSON) to work around the inability to represent expressions as data, or tunneling domain-specific language text as opaque strings or binary payloads.

Annotations +

The Ion specification provides a formal mechanism for applications to annotate any Ion value without the need to enclose the value in a container. These annotations are not interpreted by Ion readers and may be used, for example, to add type information to a struct, time units to an integer or decimal value, or a description of the contents of a blob value.

Self-describing +

Like JSON and CBOR, Ion is a self-describing format, meaning that it does not require external metadata (i.e. a schema) in order to interpret the structural characteristics of data denoted by the format. Notably, Ion payloads are free from build-time binding that inhibits independent innovation and evolution across service boundaries. This provides greater flexibility over schema-based formats such as protocol buffers, Thrift, and Avro, as data may be sparsely encoded and the implicit schema may be changed without explicit renegotiation of the schema among all consumers. These benefits come at the cost of a less compact encoding, but in our experience the positive impact on agility has been more valuable than an efficient but brittle contract.

Read-optimized binary format +

Ion’s binary format is optimized according to the following principles:

    +
  • Most data is read far more often than it is written. Generally, with the exception of logs, any data which is written is read at least once. Read multipliers are common in processing pipelines, workflows, and shared data marts.
  • +
  • Many reads are shallow or sparse, meaning that the application is focused on only a subset of the values in the stream, and that it can quickly determine if full materialization of a value is required.
  • +

In the spirit of these principles, the Ion specification includes features that make Ion’s binary encoding more efficient to read than other schema-free formats. These features include length-prefixing of binary values and Ion’s use of symbol tables.

Length-prefixing +

Because most reads are sparse, binary Ion invests some encoding space to length-prefix each value in a stream. This makes seeking to the next relevant value for a particular application inexpensive, and enables efficient skip-scanning of data. This allows applications to cherry-pick only the relevant values from the stream for deeper parsing, and to economize parsing of irrelevant values.

Symbol tables +

In binary Ion, common text tokens such as struct field names are automatically stored in a symbol table. This allows these tokens to be efficiently encoded as table offsets instead of repeated copies of the same text. As a further space optimization, symbol tables can be pre-shared between producer and consumer so that only the table name and version are included in the payload, eliminating the overhead involved with repeatedly defining the same symbols across multiple pieces of Ion data.

Install +

You can get started installing ext-ion the usual ways:

PECL +

pecl install ion

Trinity +


+./configure
make #-j$(nproc)
sudo make install #INSTALL=install
+

PHARext +

See https://pharext.org and https://replicator.pharext.org/?ion

Quick: +


+curl -sSO https://replicator.pharext.org/phars/ion/ion-0.1.0.ext.phar
php ./ion-0.1.0.ext.phar --sudo --ini <path/to/pecl.ini>
+

Verified: +


+# download phar, signature and public key
curl -sSO https://replicator.pharext.org/replicator.pub
curl -sSO https://replicator.pharext.org/phars/ion/ion-0.1.0.ext.phar
curl -sSO https://replicator.pharext.org/sigs/ion/ion-0.1.0.ext.phar.sig

# verify signature against public key
openssl dgst \
  -verify    replicator.pub \
  -signature ion-0.1.0.ext.phar.sig \
             ion-0.1.0.ext.phar

# install verified extension
php ./ion-0.1.0.ext.phar --sudo --ini <path/to/pecl.ini>

+

Check +

php -m | grep ^ion should show: ion.


Next up +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial/:2. What is ion.html b/docs/v0.2/ion/: Tutorial/:2. What is ion.html new file mode 100644 index 0000000..ce45c76 --- /dev/null +++ b/docs/v0.2/ion/: Tutorial/:2. What is ion.html @@ -0,0 +1,171 @@ + + + + + + ★2. What is ion - + mdref + + + + + + + + + + +
+ + +

+What Is Ion?

Quoting the official Ion documentation:

Amazon Ion is a richly-typed, self-describing, hierarchical data serialization format offering interchangeable binary and text representations. The text format (a superset of JSON) is easy to read and author, supporting rapid prototyping.

The binary representation is efficient to store, transmit, and skip-scan parse.

The rich type system provides unambiguous semantics for longterm preservation of data which can survive multiple generations of software evolution.

Ion was built to address rapid development, decoupling, and efficiency challenges faced every day while engineering large-scale, service-oriented architectures.

Some simple examples +

Serialization: +


+<?=
ion\serialize
([
  
"key" => "value",
  
"more" => [
    
"data" => 123
  
]
]);
?>
+
+
Output: +

+{key:"value",more:{data:123}}
+

If you now think that this looks a lot like JSON, you're probably right, because Ion is a superset of JSON:


+<?=
json_encode
([
  
"key" => "value",
  
"more" => [
    
"data" => 123
  
]
]);
?>
+
+
Output: +

+{"key":"value","more":{"data":123}}
+

So, all valid JSON is also valid Ion. Please refer to the official spec to learn more about this topic.

Unserialization: +


+<?=
var_representation
(
  
ion\unserialize('{key:"value",more:{data:123}}')
);
?>
+
+
Output: +

+[
  'key' => 'value',
  'more' => [
    'data' => 123,
  ],
]
+

If you try the same with the JSON equivalent, you'll see that it's basically valid Ion, too:


+<?=
var_representation
(
  
ion\unserialize('{"key":"value","more":{"data":123}}')
);
?>
+
+
Output: +

+[
  'key' => 'value',
  'more' => [
    'data' => 123,
  ],
]
+

Multiple documents +

Ion supports multiple sequences of documents within a single stream; consider the following:


+<?=
var_representation
(
  
ion\unserialize('
    {"key":"value","more":{"data":123}}
    {"key":"value","more":{"data":456}}
  '
, new ion\Unserializer\Unserializer(multiSequence: true)
  )
);
?>
+
+

Output: +


+[
  [
    'key' => 'value',
    'more' => [
      'data' => 123,
    ],
  ],
  [
    'key' => 'value',
    'more' => [
      'data' => 456,
    ],
  ],
]
+

Annotations +

Any Ion value can include one or more annotation symbols denoting the semantics of the content. This can be used to:

    +
  • Annotate individual values with schema types, for validation purposes.
  • +
  • Associate a higher-level datatype (e.g. a Java class) during serialization processes.
  • +
  • Indicate the notation used within a blob or clob value.
  • +
  • Apply other application semantics to a single value.
  • +

In the text format, type annotations are denoted by a non-null symbol token and double-colons preceding any value. Multiple annotations on the same value are separated by double-colons:


+int32::12                                // Suggests 32 bits as end-user type
degrees::'celsius'::100                  // You can have multiple annotaions on a value
'my.custom.type' :: { x : 12 , y : -1 }  // Gives a struct a user-defined type

{ field: some_annotation::value }        // Field's name must precede annotations of its value

jpeg :: {{ ... }}                        // Indicates the blob contains jpeg data
bool :: null.int                         // A very misleading annotation on the integer null
'' :: 1                                  // An empty annotation
null.symbol :: 1                         // ERROR: type annotation cannot be null 
+

Except for a small number of predefined system and PHP annotations, Ion itself neither defines nor validates such annotations; that behavior is left to applications or tools (such as schema validators).

It’s important to understand that annotations are symbol tokens, not symbol values. That means they do not have annotations themselves. In particular, the text a::c is a single value consisting of three textual tokens (a symbol, a double-colon, and another symbol); the first symbol token is an annotation on the value, and the second is the content of the value.

System Annotations +


+<?php

foreach (ion\Symbol\System::cases() as $e) {
  
printf("%30s:: => %s\n", $e->value, $e->name);
}

/*
                          $ion:: => Ion
                      $ion_1_0:: => Ivm_1_0
             $ion_symbol_table:: => IonSymbolTable
                          name:: => Name
                       version:: => Version
                       imports:: => Imports
                       symbols:: => Symbols
                        max_id:: => MaxId
      $ion_shared_symbol_table:: => SharedSymbolTable
*/

?>
+
+

PHP Annotations +

There are two handful of annotations used by PHP, which are centralized in the ion\Symbol\PHP enumeration:


+<?php

foreach (ion\Symbol\PHP::cases() as $e) {
  
printf("%3s:: => %s\n", $e->value, $e->name);
}

/*
  PHP:: => PHP
    R:: => Reference
    r:: => Backref
    p:: => Property
    o:: => Object
    c:: => ClassObject
    O:: => MagicObject
    C:: => CustomObject
    E:: => Enum
    S:: => Serializable
*/

?>
+
+

Next up +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial/:3. Standard Datatypes.html b/docs/v0.2/ion/: Tutorial/:3. Standard Datatypes.html new file mode 100644 index 0000000..99a515c --- /dev/null +++ b/docs/v0.2/ion/: Tutorial/:3. Standard Datatypes.html @@ -0,0 +1,160 @@ + + + + + + ★3. Standard Datatypes - + mdref + + + + + + + + + + +
+ + +

+Standard Datatypes

ION supports many of PHP's data types:

Nulls +

Additonally to the plain and simple NULL, ION can attach a type to NULL values.


+<?php
  
$writer 
= new ion\Writer\Stream\Writer(STDOUT);
$writer->writeNull();
$writer->writeTypedNull(ion\Type::Int);
$writer->writeTypedNull(ion\Type::String);
$writer->flush();

/*
    null
    null.int
    null.string
*/

?>
+
+

Booleans +

The bool type does not need a lot of explanation:


+<?php

$writer
->writeBool(true);
$writer->writeBool(false);
$writer->flush();

/*
    true
    false
*/

?>
+
+

Integers +

The int type comprises signed integers of arbitrary size.


+<?php
  
$writer
->writeInt(123);
$writer->writeInt("12345678901234567890");
$writer->flush();

/*
    123
    12345678901234567890
*/

?>
+
+

In ION-Text, underscores are allowed to separate digits:


+<?php
  
$reader 
= new ion\Reader\Buffer\Reader("-123_456_789");
$reader->next();
var_dump($reader->getType());
var_dump($reader->readInt());

/*
    enum(ion\Type::Int)
    int(-123456789)
*/

?>
+
+

Hexadecimal as well as binary notation are supported, too:


+<?php

$reader 
= new ion\Reader\Buffer\Reader("0xdead_beef");
$reader->next();
var_dump($reader->readInt());

/*
    int(3735928559)
*/

$reader = new ion\Reader\Buffer\Reader("0b10000100_11001001");
$reader->next();
var_dump($reader->readInt());

/*
    int(33993)
*/

?>
+
+

Reals +

Ion supports both binary and lossless decimal encodings of real numbers as, respectively, types float and decimal. In the text format, float values are denoted much like the decimal formats in C or Java; decimal values use d instead of e to start the exponent.

Reals without an exponent are treated as decimal. As with JSON, extra leading zeros are not allowed. Digits may be separated with an underscore.

Floats +


+<?php

var_dump
(ion\serialize(0.123));

/*
    string(25) "0.12299999999999999822e+0"
*/

var_dump(ion\unserialize("[0.123e, 123e-3]"));

/*
  array(2) {
    [0]=>
    float(0.123)
    [1]=>
    float(0.123)
  }
*/

?>
+
+

Decimals +


+<?php

var_dump
(ion\serialize(new ion\Decimal("0.123")));

/*
    string(5) "0.123"
*/

var_dump(ion\unserialize("[0.123d0, 123d-3]"));

/*
  array(2) {
    [0]=>
    object(ion\Decimal)#8 (2) {
      ["number"]=>
      string(5) "0.123"
      // ...
    }
    [1]=>
    object(ion\Decimal)#11 (2) {
      ["number"]=>
      string(5) "0.123"
      // ...
    }
  }
*/

?>
+
+

Strings +

Ion strings are Unicode character sequences of arbitrary length.

In the text format, strings are delimited by double-quotes and follow common backslash-escape conventions (see official spec). The binary format always uses UTF-8 encoding.


+<?=

ion\serialize
([
  
"abc", "new
line"
]);

/*
    ["abc", "new\nline"]
*/

?>
+
+

Long Strings +

The text format supports an alternate syntax for “long strings”, including those that break across lines. Sequences bounded by three single-quotes (''') can cross multiple lines and still count as a valid, single string. In addition, any number of adjacent triple-quoted strings are concatenated into a single value.

The concatenation happens within the Ion text parser and is neither detectable via the data model nor applicable to the binary format. Note that comments are always treated as whitespace, so concatenation still occurs when a comment falls between two long strings.


+<?php
  
var_dump
(ion\unserialize("
'''
  here are 
  several new
  lines
'''
"
));

/*
string(35) "
  here are 
  several new
  lines
"
*/

?>
+
+

Containers +

Ion defines three container types: structures, lists, and S-expressions. These types are defined recursively and may contain values of any Ion type.

Lists +

Lists are ordered collections of values. The contents of the list are heterogeneous (that is, each element can have a different type). In the text format, lists are bounded by square brackets and elements are separated by commas.


+<?=

ion\serialize
([1, "yes", null]);

/*
  [1,"yes",null]
*/

?>
+
+

Structures +

Structures are unordered collections of name/value pairs. The names are symbol tokens, and the values are unrestricted. Each name/value pair is called a field.

In the text format, structures are wrapped by curly braces, with a colon between each name and value, and a comma between the fields. For the purposes of JSON compatibility, it’s also legal to use strings for field names, but they are converted to symbol tokens by the parser.


+<?=

ion\serialize
([
  
"outlaw",
  
"key" => "value",
  
"obj" => (object)["key" => "value"]
]);

/*
    {'0':"outlaw",key:"value",obj:o::{key:"value"}}
*/

?>
+
+

+<?php

var_dump
(ion\unserialize(
  
'{\'0\':"outlaw",key:"value",obj:o::{key:"value"}}'
));

/*
  array(3) {
    [0]=>
    string(6) "outlaw"
    ["key"]=>
    string(5) "value"
    ["obj"]=>
    object(stdClass)#10 (1) {
      ["key"]=>
      string(5) "value"
    }
  }
*/

?>
+
+

Next up +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial/:4. Special Datatypes.html b/docs/v0.2/ion/: Tutorial/:4. Special Datatypes.html new file mode 100644 index 0000000..d77663b --- /dev/null +++ b/docs/v0.2/ion/: Tutorial/:4. Special Datatypes.html @@ -0,0 +1,166 @@ + + + + + + ★4. Special Datatypes - + mdref + + + + + + + + + + +
+ + +

+Special Datatypes

There are a handful of data types treated in a specific way in PHP; consider the following examples:

Symbols +

Symbols are much like strings, in that they are Unicode character sequences. The primary difference is the intended semantics: symbols represent semantic identifiers as opposed to textual literal values. Symbols are case sensitive.

In the text format, symbols are delimited by single-quotes and use the same escape characters.

See Ion Symbols for more details about symbol representations and symbol tables, and our section on Symbols, Tables and Catalogs for a distilled read.

Decimals +

See the section on reals for an introduction.


+<?php
$d 
= new ion\Decimal(123);
echo 
ion\serialize($d), " = ", $d->isInt() ? "int" : "noint", "\n";
// 123d0 = int

$d = new ion\Decimal("123.123");
echo 
ion\serialize($d), " = ", $d->isInt() ? "int" : "noint" ,"\n";
// 123.123 = noint

?>
+
+

See the official ION spec about real numbers and also Ion Float and Ion Decimals for more notes.

LOBs +

BLob +

The blob type allows embedding of arbitrary raw binary data. Ion treats such data as a single (though often very large) value. It does no processing of such data other than passing it through intact.

In the text format, blob values are denoted as RFC 4648-compliant Base64 text within two pairs of curly braces.


+{{ dHdvIHBhZGRpbmcgY2hhcmFjdGVycw== }}
+

CLob +

The clob type is similar to blob in that it holds uninterpreted binary data. The difference is that the content is expected to be text, so we use a text notation that’s more readable than Base64.


+{{ "This is a CLOB of text." }}
+

See the official ION specification on Blobs and Clobs.

Timestamps +

Timestamps represent a specific moment in time, always include a local offset, and are capable of arbitrary precision.

Instances of ion\Timestamp are really just plain \DateTime objects augmented with Stringable and ION specific formatting.


+<?=
new ion\Timestamp(
    
precision: ion\Timestamp\Precision::FracTZ,
) 
  
  
// 2022-02-25T16:11:54.118+00:00
  
?>
+
+

+<?=
new ion\Timestamp(
    
precision: ion\Timestamp\Precision::Day
) 
  
  
// 2022-02-25T
  
?>
+
+

+<?=
new ion\Timestamp(
  
precision: ion\Timestamp\Precision::MinTZ,
  
format: ion\Timestamp\Format::Min,
  
datetime: "2020-03-15T12:34",
  
timezone: new DateTimeZone("Europe/Vienna")
) 
  
  
// 2020-03-15T12:34+01:00
  
?>
+
+

See also the official ION Timestamp specification.

Special PHP Objects +

Deprecated Serializable: +

+

NOTE:
+The interface Serializable has been deprecated in 8.1 and should be replaced with magic serialize methods.

+

+<?php
  
class srlzbl implements \Serializable {
  private 
$data = "foo";
  public function 
serialize() { 
    return 
"bar"; 
  }
  public function 
unserialize($data) { 
    
$this->data = $data; 
  }
}

$srlzbl = new srlzbl;
var_dump($srlzbl);

$srlzd = ion\serialize($srlzbl);
echo 
$srlzd;

/*
    object(srlzbl)#4 (1) {
        ["data":"srlzbl":private]=>
        string(3) "foo"
    }
    
    S::srlzbl::{{"bar"}}

*/

?>
+
+

Everything as expected so far, Serializable return a string, but since they cannot indicate whether it's a valid UTF-8 string, a ion\Type::CLob or ion\Type::BLob, CLobs are assumed.

Unserialization does not offer any surprises, either:


+<?php 
  
var_dump
(ion\unserialize($srlzd));

/*
  object(srlzbl)#4 (1) {
    ["data":"srlzbl":private]=>
    string(3) "bar"
  }

*/

?>
+
+

Magic __serialize: +

Implementing serialization behavior with magic methods is the preferred way since 8.1:


+<?php
  
class magic {
  private 
string $foo = "foo";
  function 
__serialize() : array {
    return [
"foo" => "bar"];
  }
  function 
__unserialize(array $data) : void {
    foreach (
$data as $k => $v) 
      
$this->$k = $v;
  }
}

$magic = new magic;
var_dump($magic);

$srlzd = ion\serialize($magic);
echo 
$srlzd;

/*
  object(magic)#6 (1) {
    ["foo":"magic":private]=>
    string(3) "foo"
  }

  O::magic::{foo:"bar"}

*/

?>
+
+

Again, unserialization yields the expected results:


+<?php
  
var_dump
(ion\unserialize($srlzd));

/*
  object(magic)#7 (1) {
    ["foo":"magic":private]=>
    string(3) "bar"
  }

*/

?>
+
+

Custom serialize: +

Customly serializable objects work like magic serializable objects, with custom names for the magic methods.


+<?php
  
class custom {
  private array 
$data;
  function 
init(array $data) : void {
    
$this->data = $data;
  }
  function 
export() : array {
    return 
$this->data;
  }
}

$custom = new custom;
$custom->init(["foo" => "bar"]);
echo 
$srlzd = ion\serialize($custom);

/*
    c::custom::{data:p::custom::{foo:"bar"}}
    
*/

?>
+
+

The above is actually the result of serializing a standard class backed PHP object, because we didn't implement any serialization primitives and did neither specify a custom method to call. So let's just do that:


+<?php
  
$srlzr 
= new ion\Serializer\Serializer(callCustomSerialize: "export");
echo 
$srlzd = ion\serialize($custom, $srlzr);

/*
    C::custom::{foo:"bar"}

*/

?>
+
+

Note how this output compares to the output of the standard magic serializable object.

Unserialization works as used to, except sepcifying thwe custom unserialization method to call:


+<?php
  
$unsrlzr 
= new ion\Unserializer\Unserializer(callCustomUnserialize: "init");
var_dump(ion\unserialize($srlzd, $unsrlzr));

/*
    object(custom)#10 (1) {
    ["data":"custom":private]=>
    array(1) {
      ["foo"]=>
      string(3) "bar"
    }
  }

*/

?>
+
+

S-Expressions +

An S-expression (or symbolic expression) is much like a list in that it’s an ordered collection of values. However, the notation aligns with Lisp syntax to connote use of application semantics like function calls or programming-language statements. As such, correct interpretation requires a higher-level context other than the raw Ion parser and data model.

In the text format, S-expressions are bounded by parentheses. S-expressions also allow unquoted operator symbols (in addition to the unquoted identifier symbols allowed everywhere), so commas are interpreted as values rather than element separators.


+null.sexp         // A null S-expression value
()                // An empty expression value
(cons 1 2)        // S-expression of three values
([hello][there])  // S-expression containing two lists

(a+-b)  ( 'a' '+-' 'b' )    // Equivalent; three symbols
(a.b;)  ( 'a' '.' 'b' ';')  // Equivalent; four symbols
+

Although Ion S-expressions use a syntax similar to Lisp expressions, Ion does not define their interpretation or any semantics at all, beyond the pure sequence-of-values data model indicated above.


Next up +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/: Tutorial/:5. Symbols, Tables and Catalogs.html b/docs/v0.2/ion/: Tutorial/:5. Symbols, Tables and Catalogs.html new file mode 100644 index 0000000..ec26750 --- /dev/null +++ b/docs/v0.2/ion/: Tutorial/:5. Symbols, Tables and Catalogs.html @@ -0,0 +1,137 @@ + + + + + + ★5. Symbols, Tables and Catalogs - + mdref + + + + + + + + + + +
+ + +

+Symbols, Tables and Catalogs

Schematic Overview +


+  +---------+
  | Catalog |
  +----+----+-------------------------------+
  |    |                                    |
  |    |    +-------------+                 |
  |    +--->| SymbolTable |                 |
  |    |    +---+---------+---------------+ |
  |    |    |   |                         | |
  |    |    |   |     +-------------------+ |
  |    |    |   |     | Symbol (ID, Text) | |
  |    |    |   +---->| Symbol (ID, Text) | |
  |    |    |         | ...               | |
  |    |    +---------+-------------------+ |
  |    |                                    |
  |    |    +-------------+                 |
  |    +--->| SymbolTable |                 |
  |    |    +---+---------+---------------+ |
  |    |    |   |                         | |
  |    .    |   |     +-------------------+ |
  |    .    |   +---->| Symbol (ID, Text) | |
  |    .    |         | ...               | |
  |    .    +---------+-------------------+ |
  |    .                                    |
  +-----------------------------------------+
+

Catalog +

The Catalog holds a collection of ion\Symbol\Table instances queried from ion\Reader and ion\Writer instances.

See also the ION spec's symbol guide chapter on catalogs.


+<?php
$catalog 
= new ion\Catalog;
$symtab = ion\Symbol\PHP::asTable();
$catalog->add($symtab);
?>
+
+

Symbol Table +

There are three types of symbol tables:

    +
  • Local
  • +
  • Shared
  • +
  • System (a special shared symbol table)
  • +

Local symbol tables do not have names, while shared symbol tables require them; only shared symbol tables may be added to a catalog or to a writer’s list of imports.

Local symbol tables are managed internally by Ion readers and writers. No application configuration is required to tell Ion readers or writers that local symbol tables should be used.

Using a shared symbol table +

Using local symbol tables requires the local symbol table (including all of its symbols) to be written at the beginning of the value stream. Consider an Ion stream that represents CSV data with many columns. Although local symbol tables will optimize writing and reading each value, including the entire symbol table itself in the value stream adds overhead that increases with the number of columns.

If it is feasible for the writers and readers of the stream to agree on a pre-defined shared symbol table, this overhead can be reduced.

Consider the following CSV in a file called test.csv.


+ id,type,state
 1,foo,false
 2,bar,true
 3,baz,true
 ...
+

An application that wishes to convert this data into the Ion format can generate a symbol table containing the column names. This reduces encoding size and improves read efficiency.

Consider the following shared symbol table that declares the column names of test.csv as symbols. Note that the shared symbol table may have been generated by hand or programmatically.


+ $ion_shared_symbol_table::{
   name: "test.csv.columns",
   version: 1,
   symbols: ["id", "type", "state"],
 }
+

This shared symbol table can be stored in a file (or in a database, etc.) to be resurrected into a symbol table at runtime.

Because the value stream written using the shared symbol table does not contain the symbol mappings, a reader of the stream needs to access the shared symbol table using a catalog.

Consider the following complete example:


+<?php

/**
 * Representing a CSV row
 */
class Row {
  public function 
__construct(
    public readonly 
int $id,
    public readonly 
string $type,
    public readonly 
bool $state = true
  
) {}
}

/* Fetch the shared symbol table from file, db, etc. */
$symtab = ion\unserialize(<<<'SymbolTable'
 $ion_shared_symbol_table::{
   name: "test.csv.columns",
   version: 1,
   symbols: ["id", "type", "state"],
 }
SymbolTable
);

/* Add the shared symbol table to a catalog */
$catalog = new ion\Catalog;
$catalog->add($symtab);

/* Use the catalog when writing the data */
$writer = new class(
  
catalog: $catalog,
  
outputBinary: true
) extends ion\Writer\Buffer\Writer {
  public function 
writeRow(Row $row) : void {
    
$this->startContainer(ion\Type::Struct);
    
    
$this->writeFieldname("id");
    
$this->writeInt($row->id);
    
    
$this->writeFieldName("type");
    
$this->writeString($row->type);
    
    
$this->writeFieldName("state");
    
$this->writeBool($row->state);
    
    
$this->finishContainer();
  }
};

$writer->writeRow(new Row(1, "foo", false));
$writer->writeRow(new Row(2, "bar"));
$writer->writeRow(new Row(3, "baz"));
$writer->flush();

?>
+
+

Let's inspect the binary ION stream and verify that the column names are actually replaced by SymbolIDs:


+<?php
  
foreach (str_split($writer->getBuffer(), 8) as $line) {
    
printf("%-26s", chunk_split(bin2hex($line), 2, " "));
    foreach (
str_split($line) as $byte) {
        echo 
$byte >= ' ' && $byte <= '~' ? $byte : ".";
    }
    echo 
"\n";
}
echo 
"\n";

/*
  e0 01 00 ea ee a2 81 83   ........  \ 
  de 9e 86 be 9b de 99 84   ........   |
  8e 90 74 65 73 74 2e 63   ..test.c    > here's ION symbol table metadata
  73 76 2e 63 6f 6c 75 6d   sv.colum   |
  6e 73 85 21 01 88 21 03   ns.!..!.  <
  da 8a 21 01 8b 83 66 6f   ..!...fo   |
  6f 8c 11 da 8a 21 02 8b   o....!..    > here's the actual data
  83 62 61 72 8c 11 da 8a   .bar....   |
  21 03 8b 83 62 61 7a 8c   !...baz.  /
  11                        .
*/

?>
+
+

When unserializing without knowing the used symbols, our column name will actually be just symbol IDs $<SID>:


+<?php

var_dump
(ion\unserialize($writer->getBuffer(), [
  
"multiSequence" => true,
]));

/*
array(3) {
  [0]=>
  array(3) {
    ["$10"]=>
    int(1)
    ["$11"]=>
    string(3) "foo"
    ["$12"]=>
    bool(false)
  }
  [1]=>
  array(3) {
    ["$10"]=>
    int(2)
    ["$11"]=>
    string(3) "bar"
    ["$12"]=>
    bool(true)
  }
  [2]=>
  array(3) {
    ["$10"]=>
    int(3)
    ["$11"]=>
    string(3) "baz"
    ["$12"]=>
    bool(true)
  }
}
*/

?>
+
+

When unserializing with known symbols, the symbol IDs will be resolved when using the catatalog with the appropriate symbol tables:


+<?php

$reader 
= new \ion\Reader\Buffer\Reader($writer->getBuffer(),
    
catalog: $catalog
);
$unser = new ion\Unserializer\Unserializer(multiSequence: true);
var_dump($unser->unserialize($reader));

/*
  array(3) {
    [0]=>
    array(3) {
      ["id"]=>
      int(1)
      ["type"]=>
      string(3) "foo"
      ["state"]=>
      bool(false)
    }
    [1]=>
    array(3) {
      ["id"]=>
      int(2)
      ["type"]=>
      string(3) "bar"
      ["state"]=>
      bool(true)
    }
    [2]=>
    array(3) {
      ["id"]=>
      int(3)
      ["type"]=>
      string(3) "baz"
      ["state"]=>
      bool(true)
    }
  }
*/

?>
+
+
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog.html b/docs/v0.2/ion/Catalog.html new file mode 100644 index 0000000..a25cc71 --- /dev/null +++ b/docs/v0.2/ion/Catalog.html @@ -0,0 +1,207 @@ + + + + + + Catalog - + mdref + + + + + + + + + + +
+ + +

+class ion\Catalog
 implements Countable +

The Catalog holds a collection of ion\Symbol\Table instances queried from ion\Reader and ion\Writer instances.

See also the ION spec's symbol guide chapter on catalog..

Constants: +

None.

Properties: +

    +
  • +private array $symbolTables = array ( +)
    +Internal cache.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog/__construct.html b/docs/v0.2/ion/Catalog/__construct.html new file mode 100644 index 0000000..5a41ef5 --- /dev/null +++ b/docs/v0.2/ion/Catalog/__construct.html @@ -0,0 +1,109 @@ + + + + + + Catalog::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Catalog::__construct()

Create a new Catalog.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog/add.html b/docs/v0.2/ion/Catalog/add.html new file mode 100644 index 0000000..3fcb771 --- /dev/null +++ b/docs/v0.2/ion/Catalog/add.html @@ -0,0 +1,113 @@ + + + + + + Catalog::add - + mdref + + + + + + + + + + +
+ + +

+void ion\Catalog::add(ion\Symbol\Table $table)

Add a shared symbol table to the catalog.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog/find.html b/docs/v0.2/ion/Catalog/find.html new file mode 100644 index 0000000..b5a24f3 --- /dev/null +++ b/docs/v0.2/ion/Catalog/find.html @@ -0,0 +1,119 @@ + + + + + + Catalog::find - + mdref + + + + + + + + + + +
+ + +

+?ion\Symbol\Table ion\Catalog::find(string $name, [int $version = 0])

Find a shared symbol table within the catalog.

Params: +

    +
  • +string $name
    +The name of the symbol table.
  • +
  • Optional int $version = 0
    +The version the symbol table should match.
  • +

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog/findBest.html b/docs/v0.2/ion/Catalog/findBest.html new file mode 100644 index 0000000..7aa8880 --- /dev/null +++ b/docs/v0.2/ion/Catalog/findBest.html @@ -0,0 +1,119 @@ + + + + + + Catalog::findBest - + mdref + + + + + + + + + + +
+ + +

+?ion\Symbol\Table ion\Catalog::findBest(string $name, [int $version = 0])

Find a "best match" for a shared symbol table within the catalog.

Params: +

    +
  • +string $name
    +The name of the symbol table,
  • +
  • Optional int $version = 0
    +The minimum version of the symbol table.
  • +

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Catalog/remove.html b/docs/v0.2/ion/Catalog/remove.html new file mode 100644 index 0000000..c8f06f8 --- /dev/null +++ b/docs/v0.2/ion/Catalog/remove.html @@ -0,0 +1,117 @@ + + + + + + Catalog::remove - + mdref + + + + + + + + + + +
+ + +

+bool ion\Catalog::remove(ion\Symbol\Table|string $table)

Remove a shared symbol table from the catalog.

Params: +

Returns: +

    +
  • +bool, Success.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal.html b/docs/v0.2/ion/Decimal.html new file mode 100644 index 0000000..b9e813d --- /dev/null +++ b/docs/v0.2/ion/Decimal.html @@ -0,0 +1,245 @@ + + + + + + Decimal - + mdref + + + + + + + + + + +
+ + +

+class ion\Decimal
 implements Stringable +

An arbitrary precision fixed point decimal.

See also \ion\Decimal\Context, and the ION spec's decimal docs.

Constants: +

None.

Properties: +

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context.html b/docs/v0.2/ion/Decimal/Context.html new file mode 100644 index 0000000..af4bc9c --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context.html @@ -0,0 +1,223 @@ + + + + + + Context - + mdref + + + + + + + + + + +
+ + +

+class ion\Decimal\Context +

An ion\Decimal's context.

Constants: +

None.

Properties: +

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/Dec128.html b/docs/v0.2/ion/Decimal/Context/Dec128.html new file mode 100644 index 0000000..f403ca6 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/Dec128.html @@ -0,0 +1,121 @@ + + + + + + Dec128 - + mdref + + + + + + + + + + +
+ + +

+static ion\Decimal\Context ion\Decimal\Context::Dec128()

Create a context suitable for 128bit decimals.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/Dec32.html b/docs/v0.2/ion/Decimal/Context/Dec32.html new file mode 100644 index 0000000..9352f50 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/Dec32.html @@ -0,0 +1,121 @@ + + + + + + Dec32 - + mdref + + + + + + + + + + +
+ + +

+static ion\Decimal\Context ion\Decimal\Context::Dec32()

Create a context suitable for 32bit decimals.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/Dec64.html b/docs/v0.2/ion/Decimal/Context/Dec64.html new file mode 100644 index 0000000..20aaf11 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/Dec64.html @@ -0,0 +1,121 @@ + + + + + + Dec64 - + mdref + + + + + + + + + + +
+ + +

+static ion\Decimal\Context ion\Decimal\Context::Dec64()

Create a context suitable for 64bit decimals.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/DecMax.html b/docs/v0.2/ion/Decimal/Context/DecMax.html new file mode 100644 index 0000000..6b75a20 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/DecMax.html @@ -0,0 +1,124 @@ + + + + + + DecMax - + mdref + + + + + + + + + + +
+ + +

+static ion\Decimal\Context ion\Decimal\Context::DecMax([ion\Decimal\Context\Rounding|int $round = ion\Decimal\Context\Rounding::HalfEven])

Create a context with maximum settings.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/Rounding.html b/docs/v0.2/ion/Decimal/Context/Rounding.html new file mode 100644 index 0000000..2a26190 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/Rounding.html @@ -0,0 +1,155 @@ + + + + + + Rounding - + mdref + + + + + + + + + + +
+ + +

+enum ion\Decimal\Context\Rounding
 implements BackedEnum +

Rounding mode.

Constants: +

    +
  • +Ceiling = 0 +
  • +
  • +Up = 1 +
  • +
  • +HalfUp = 2 +
  • +
  • +HalfEven = 3 +
  • +
  • +HalfDown = 4 +
  • +
  • +Down = 5 +
  • +
  • +Floor = 6 +
  • +
  • +Down05Up = 7 +
  • +

Properties: +

    +
  • +public string $name
    +Rounding mode.
  • +
  • +public int $value
    +Rounding mode.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/Context/__construct.html b/docs/v0.2/ion/Decimal/Context/__construct.html new file mode 100644 index 0000000..7bc8805 --- /dev/null +++ b/docs/v0.2/ion/Decimal/Context/__construct.html @@ -0,0 +1,137 @@ + + + + + + Context::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Decimal\Context::__construct(int $digits, int $eMax, int $eMin, ion\Decimal\Context\Rounding|int $round, bool $clamp)

Create a new decimal context.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/__construct.html b/docs/v0.2/ion/Decimal/__construct.html new file mode 100644 index 0000000..7f9188e --- /dev/null +++ b/docs/v0.2/ion/Decimal/__construct.html @@ -0,0 +1,117 @@ + + + + + + Decimal::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Decimal::__construct(string|int $number, [?ion\Decimal\Context $context = NULL])

Create a new fixed point decimal.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/equals.html b/docs/v0.2/ion/Decimal/equals.html new file mode 100644 index 0000000..6b7dd5a --- /dev/null +++ b/docs/v0.2/ion/Decimal/equals.html @@ -0,0 +1,119 @@ + + + + + + Decimal::equals - + mdref + + + + + + + + + + +
+ + +

+bool ion\Decimal::equals(ion\Decimal $decimal)

Check two decimals for equality.

Params: +

Returns: +

    +
  • +bool, Whether both decimals equal.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/isInt.html b/docs/v0.2/ion/Decimal/isInt.html new file mode 100644 index 0000000..9d20db6 --- /dev/null +++ b/docs/v0.2/ion/Decimal/isInt.html @@ -0,0 +1,115 @@ + + + + + + Decimal::isInt - + mdref + + + + + + + + + + +
+ + +

+bool ion\Decimal::isInt()

Check whether the decimal is actually a big integer.

Params: +

None.

Returns: +

    +
  • +bool, Whether the decimal is actually an integer.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/toInt.html b/docs/v0.2/ion/Decimal/toInt.html new file mode 100644 index 0000000..40fcae3 --- /dev/null +++ b/docs/v0.2/ion/Decimal/toInt.html @@ -0,0 +1,115 @@ + + + + + + Decimal::toInt - + mdref + + + + + + + + + + +
+ + +

+int ion\Decimal::toInt()

Get the integer represention of the decimal.

Params: +

None.

Throws: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Decimal/toString.html b/docs/v0.2/ion/Decimal/toString.html new file mode 100644 index 0000000..5f674e0 --- /dev/null +++ b/docs/v0.2/ion/Decimal/toString.html @@ -0,0 +1,111 @@ + + + + + + Decimal::toString - + mdref + + + + + + + + + + +
+ + +

+string ion\Decimal::toString()

Get the string representation of the decimal.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Exception.html b/docs/v0.2/ion/Exception.html new file mode 100644 index 0000000..435aa22 --- /dev/null +++ b/docs/v0.2/ion/Exception.html @@ -0,0 +1,125 @@ + + + + + + Exception - + mdref + + + + + + + + + + +
+ + +

+class ion\Exception
 extends Exception
 implements Throwable +

Base exception for the ION extension.

Constants: +

None.

Properties: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/LOB.html b/docs/v0.2/ion/LOB.html new file mode 100644 index 0000000..2c3398d --- /dev/null +++ b/docs/v0.2/ion/LOB.html @@ -0,0 +1,153 @@ + + + + + + LOB - + mdref + + + + + + + + + + +
+ + +

+class ion\LOB +

A large object.

See also \ion\Type, the ION spec's BLob definition, and the ION sepc's CLob definition.

Constants: +

None.

Properties: +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/LOB/__construct.html b/docs/v0.2/ion/LOB/__construct.html new file mode 100644 index 0000000..0442770 --- /dev/null +++ b/docs/v0.2/ion/LOB/__construct.html @@ -0,0 +1,107 @@ + + + + + + LOB::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\LOB::__construct(string $value, [ion\Type $type = ion\Type::CLob])

Create an ION large object.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader.html b/docs/v0.2/ion/Reader.html new file mode 100644 index 0000000..c6073b9 --- /dev/null +++ b/docs/v0.2/ion/Reader.html @@ -0,0 +1,569 @@ + + + + + + Reader - + mdref + + + + + + + + + + +
+ + +

+interface ion\Reader
 implements RecursiveIterator +

ION reader API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Buffer.html b/docs/v0.2/ion/Reader/Buffer.html new file mode 100644 index 0000000..68faae3 --- /dev/null +++ b/docs/v0.2/ion/Reader/Buffer.html @@ -0,0 +1,203 @@ + + + + + + Buffer - + mdref + + + + + + + + + + +
+ + +

+interface ion\Reader\Buffer
 implements ion\Reader +

ION string buffer reader API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Buffer/Reader.html b/docs/v0.2/ion/Reader/Buffer/Reader.html new file mode 100644 index 0000000..d8c8910 --- /dev/null +++ b/docs/v0.2/ion/Reader/Buffer/Reader.html @@ -0,0 +1,136 @@ + + + + + + Reader - + mdref + + + + + + + + + + +
+ + +

+class ion\Reader\Buffer\Reader
 extends ion\Reader\Reader
 implements ion\Reader\Buffer +

ION buffer reader.

Constants: +

None.

Properties: +

None.

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Buffer/Reader/__construct.html b/docs/v0.2/ion/Reader/Buffer/Reader/__construct.html new file mode 100644 index 0000000..87213e7 --- /dev/null +++ b/docs/v0.2/ion/Reader/Buffer/Reader/__construct.html @@ -0,0 +1,127 @@ + + + + + + Reader::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Buffer\Reader::__construct(string $buffer, [ion\Reader\Options|array|null $options = NULL])

Create a new string buffer reader.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Buffer/getBuffer.html b/docs/v0.2/ion/Reader/Buffer/getBuffer.html new file mode 100644 index 0000000..1a6cd53 --- /dev/null +++ b/docs/v0.2/ion/Reader/Buffer/getBuffer.html @@ -0,0 +1,117 @@ + + + + + + Buffer::getBuffer - + mdref + + + + + + + + + + +
+ + +

+string ion\Reader\Buffer::getBuffer()

Get the buffer being read from.

Params: +

None.

Returns: +

    +
  • +string, The buffer read from.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Options.html b/docs/v0.2/ion/Reader/Options.html new file mode 100644 index 0000000..3e2fe33 --- /dev/null +++ b/docs/v0.2/ion/Reader/Options.html @@ -0,0 +1,213 @@ + + + + + + Options - + mdref + + + + + + + + + + +
+ + +

+class ion\Reader\Options +

Reader options.

Constants: +

None.

Properties: +

    +
  • +public ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • +public ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • +public ?Closure $onContextChange = NULL
    +Callback as function(\ion\Reader):void called upon local symbol table context change.
  • +
  • +public bool $returnSystemValues = false
    +Whether to return otherwise hidden system values.
  • +
  • +public int $maxContainerDepth = 10
    +The maximum depth of nested containers.
  • +
  • +public int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • +public int $annotationBufferSize = 16384
    +The maximum number of bytes of all annotations on a single value.
  • +
  • +public int $tempBufferSize = 16384
    +The maximum number of bytes of a symbol/value/chunk.
  • +
  • +public bool $skipCharacterValidation = false
    +Whether to skip UTF-8 validation.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Options/__construct.html b/docs/v0.2/ion/Reader/Options/__construct.html new file mode 100644 index 0000000..174743d --- /dev/null +++ b/docs/v0.2/ion/Reader/Options/__construct.html @@ -0,0 +1,130 @@ + + + + + + Options::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Options::__construct([?ion\Catalog $catalog = NULL, [?ion\Decimal\Context $decimalContext = NULL, [?Closure $onContextChange = NULL, [bool $returnSystemValues = false, [int $maxContainerDepth = 10, [int $maxAnnotations = 10, [int $annotationBufferSize = 16384, [int $tempBufferSize = 16384, [bool $skipCharacterValidation = false]]]]]]]]])

Params: +

    +
  • Optional ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • Optional ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • Optional ?Closure $onContextChange = NULL
    +Callback as function(\ion\Reader):void called upon local symbol table context change.
  • +
  • Optional bool $returnSystemValues = false
    +Whether to return otherwise hidden system values.
  • +
  • Optional int $maxContainerDepth = 10
    +The maximum depth of nested containers.
  • +
  • Optional int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • Optional int $annotationBufferSize = 16384
    +The maximum number of bytes of all annotations on a single value.
  • +
  • Optional int $tempBufferSize = 16384
    +The maximum number of bytes of a symbol/value/chunk.
  • +
  • Optional bool $skipCharacterValidation = false
    +Whether to skip UTF-8 validation.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Reader.html b/docs/v0.2/ion/Reader/Reader.html new file mode 100644 index 0000000..c1250ef --- /dev/null +++ b/docs/v0.2/ion/Reader/Reader.html @@ -0,0 +1,213 @@ + + + + + + Reader - + mdref + + + + + + + + + + +
+ + +

+abstract class ion\Reader\Reader
 implements ion\Reader +

Base implementation of ION readers.

Constants: +

None.

Properties: +

    +
  • +public ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • +public ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • +public ?Closure $onContextChange = NULL
    +Callback as function(\ion\Reader):void called upon local symbol table context change.
  • +
  • +public bool $returnSystemValues = false
    +Whether to return otherwise hidden system values.
  • +
  • +public int $maxContainerDepth = 10
    +The maximum depth of nested containers.
  • +
  • +public int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • +public int $annotationBufferSize = 16384
    +The maximum number of bytes of all annotations on a single value.
  • +
  • +public int $tempBufferSize = 16384
    +The maximum number of bytes of a symbol/value/chunk.
  • +
  • +public bool $skipCharacterValidation = false
    +Whether to skip UTF-8 validation.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Reader/__construct.html b/docs/v0.2/ion/Reader/Reader/__construct.html new file mode 100644 index 0000000..873b860 --- /dev/null +++ b/docs/v0.2/ion/Reader/Reader/__construct.html @@ -0,0 +1,133 @@ + + + + + + Reader::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Reader::__construct(string|resource $data, [?ion\Catalog $catalog = NULL, [?ion\Decimal\Context $decimalContext = NULL, [?Closure $onContextChange = NULL, [bool $returnSystemValues = false, [int $maxContainerDepth = 10, [int $maxAnnotations = 10, [int $annotationBufferSize = 16384, [int $tempBufferSize = 16384, [bool $skipCharacterValidation = false]]]]]]]]])

Params: +

    +
  • +string|resource $data
    +The string or resource to read from.
  • +
  • Optional ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • Optional ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • Optional ?Closure $onContextChange = NULL
    +Callback as function(\ion\Reader):void called upon local symbol table context change.
  • +
  • Optional bool $returnSystemValues = false
    +Whether to return otherwise hidden system values.
  • +
  • Optional int $maxContainerDepth = 10
    +The maximum depth of nested containers.
  • +
  • Optional int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • Optional int $annotationBufferSize = 16384
    +The maximum number of bytes of all annotations on a single value.
  • +
  • Optional int $tempBufferSize = 16384
    +The maximum number of bytes of a symbol/value/chunk.
  • +
  • Optional bool $skipCharacterValidation = false
    +Whether to skip UTF-8 validation.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream.html b/docs/v0.2/ion/Reader/Stream.html new file mode 100644 index 0000000..2e2e5b0 --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream.html @@ -0,0 +1,231 @@ + + + + + + Stream - + mdref + + + + + + + + + + +
+ + +

+interface ion\Reader\Stream
 implements ion\Reader +

ION stream reader API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream/Reader.html b/docs/v0.2/ion/Reader/Stream/Reader.html new file mode 100644 index 0000000..a0d844a --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream/Reader.html @@ -0,0 +1,140 @@ + + + + + + Reader - + mdref + + + + + + + + + + +
+ + +

+class ion\Reader\Stream\Reader
 extends ion\Reader\Reader
 implements ion\Reader\Stream +

ION stream reader.

Constants: +

None.

Properties: +

None.

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream/Reader/__construct.html b/docs/v0.2/ion/Reader/Stream/Reader/__construct.html new file mode 100644 index 0000000..acdadd6 --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream/Reader/__construct.html @@ -0,0 +1,127 @@ + + + + + + Reader::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Stream\Reader::__construct(resource $stream, [ion\Reader\Options|array|null $options = NULL])

Create a new stream reader.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream/getStream.html b/docs/v0.2/ion/Reader/Stream/getStream.html new file mode 100644 index 0000000..b33ba70 --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream/getStream.html @@ -0,0 +1,121 @@ + + + + + + Stream::getStream - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Stream::getStream()

Get the stream being read from.

Params: +

None.

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream/resetStream.html b/docs/v0.2/ion/Reader/Stream/resetStream.html new file mode 100644 index 0000000..e3e39ab --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream/resetStream.html @@ -0,0 +1,121 @@ + + + + + + Stream::resetStream - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Stream::resetStream(resource $stream)

Reset the stream read from.

Params: +

    +
  • +resource $stream
    +The new stream to from.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/Stream/resetStreamWithLength.html b/docs/v0.2/ion/Reader/Stream/resetStreamWithLength.html new file mode 100644 index 0000000..d219837 --- /dev/null +++ b/docs/v0.2/ion/Reader/Stream/resetStreamWithLength.html @@ -0,0 +1,124 @@ + + + + + + Stream::resetStreamWithLength - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader\Stream::resetStreamWithLength(resource $stream, int $length)

Reset the stream read from, limiting length to read.

Params: +

    +
  • +resource $stream
    +The stream to read from.
  • +
  • +int $length
    +The maximum length to read from $stream.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/countAnnotations.html b/docs/v0.2/ion/Reader/countAnnotations.html new file mode 100644 index 0000000..2c3cfdc --- /dev/null +++ b/docs/v0.2/ion/Reader/countAnnotations.html @@ -0,0 +1,163 @@ + + + + + + Reader::countAnnotations - + mdref + + + + + + + + + + +
+ + +

+int ion\Reader::countAnnotations()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getAnnotation.html b/docs/v0.2/ion/Reader/getAnnotation.html new file mode 100644 index 0000000..920e08c --- /dev/null +++ b/docs/v0.2/ion/Reader/getAnnotation.html @@ -0,0 +1,167 @@ + + + + + + Reader::getAnnotation - + mdref + + + + + + + + + + +
+ + +

+string ion\Reader::getAnnotation(int $index)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getAnnotationSymbol.html b/docs/v0.2/ion/Reader/getAnnotationSymbol.html new file mode 100644 index 0000000..221e38d --- /dev/null +++ b/docs/v0.2/ion/Reader/getAnnotationSymbol.html @@ -0,0 +1,167 @@ + + + + + + Reader::getAnnotationSymbol - + mdref + + + + + + + + + + +
+ + +

+ion\Symbol ion\Reader::getAnnotationSymbol(int $index)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getAnnotationSymbols.html b/docs/v0.2/ion/Reader/getAnnotationSymbols.html new file mode 100644 index 0000000..bfe1010 --- /dev/null +++ b/docs/v0.2/ion/Reader/getAnnotationSymbols.html @@ -0,0 +1,163 @@ + + + + + + Reader::getAnnotationSymbols - + mdref + + + + + + + + + + +
+ + +

+array ion\Reader::getAnnotationSymbols()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getAnnotations.html b/docs/v0.2/ion/Reader/getAnnotations.html new file mode 100644 index 0000000..b25339d --- /dev/null +++ b/docs/v0.2/ion/Reader/getAnnotations.html @@ -0,0 +1,163 @@ + + + + + + Reader::getAnnotations - + mdref + + + + + + + + + + +
+ + +

+array ion\Reader::getAnnotations()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getDepth.html b/docs/v0.2/ion/Reader/getDepth.html new file mode 100644 index 0000000..4515ea3 --- /dev/null +++ b/docs/v0.2/ion/Reader/getDepth.html @@ -0,0 +1,163 @@ + + + + + + Reader::getDepth - + mdref + + + + + + + + + + +
+ + +

+int ion\Reader::getDepth()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getFieldName.html b/docs/v0.2/ion/Reader/getFieldName.html new file mode 100644 index 0000000..31080ce --- /dev/null +++ b/docs/v0.2/ion/Reader/getFieldName.html @@ -0,0 +1,163 @@ + + + + + + Reader::getFieldName - + mdref + + + + + + + + + + +
+ + +

+string ion\Reader::getFieldName()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getFieldNameSymbol.html b/docs/v0.2/ion/Reader/getFieldNameSymbol.html new file mode 100644 index 0000000..fc98ace --- /dev/null +++ b/docs/v0.2/ion/Reader/getFieldNameSymbol.html @@ -0,0 +1,163 @@ + + + + + + Reader::getFieldNameSymbol - + mdref + + + + + + + + + + +
+ + +

+ion\Symbol ion\Reader::getFieldNameSymbol()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getPosition.html b/docs/v0.2/ion/Reader/getPosition.html new file mode 100644 index 0000000..e10981a --- /dev/null +++ b/docs/v0.2/ion/Reader/getPosition.html @@ -0,0 +1,163 @@ + + + + + + Reader::getPosition - + mdref + + + + + + + + + + +
+ + +

+int ion\Reader::getPosition()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getType.html b/docs/v0.2/ion/Reader/getType.html new file mode 100644 index 0000000..399ea95 --- /dev/null +++ b/docs/v0.2/ion/Reader/getType.html @@ -0,0 +1,163 @@ + + + + + + Reader::getType - + mdref + + + + + + + + + + +
+ + +

+ion\Type ion\Reader::getType()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getValueLength.html b/docs/v0.2/ion/Reader/getValueLength.html new file mode 100644 index 0000000..cd9ff2c --- /dev/null +++ b/docs/v0.2/ion/Reader/getValueLength.html @@ -0,0 +1,163 @@ + + + + + + Reader::getValueLength - + mdref + + + + + + + + + + +
+ + +

+int ion\Reader::getValueLength()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/getValueOffset.html b/docs/v0.2/ion/Reader/getValueOffset.html new file mode 100644 index 0000000..a4eeb73 --- /dev/null +++ b/docs/v0.2/ion/Reader/getValueOffset.html @@ -0,0 +1,163 @@ + + + + + + Reader::getValueOffset - + mdref + + + + + + + + + + +
+ + +

+int ion\Reader::getValueOffset()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/hasAnnotation.html b/docs/v0.2/ion/Reader/hasAnnotation.html new file mode 100644 index 0000000..47d8ce9 --- /dev/null +++ b/docs/v0.2/ion/Reader/hasAnnotation.html @@ -0,0 +1,167 @@ + + + + + + Reader::hasAnnotation - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::hasAnnotation(string $annotation)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/hasAnnotations.html b/docs/v0.2/ion/Reader/hasAnnotations.html new file mode 100644 index 0000000..e897041 --- /dev/null +++ b/docs/v0.2/ion/Reader/hasAnnotations.html @@ -0,0 +1,163 @@ + + + + + + Reader::hasAnnotations - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::hasAnnotations()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/isInStruct.html b/docs/v0.2/ion/Reader/isInStruct.html new file mode 100644 index 0000000..db58f79 --- /dev/null +++ b/docs/v0.2/ion/Reader/isInStruct.html @@ -0,0 +1,163 @@ + + + + + + Reader::isInStruct - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::isInStruct()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/isNull.html b/docs/v0.2/ion/Reader/isNull.html new file mode 100644 index 0000000..d14cab8 --- /dev/null +++ b/docs/v0.2/ion/Reader/isNull.html @@ -0,0 +1,163 @@ + + + + + + Reader::isNull - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::isNull()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readBool.html b/docs/v0.2/ion/Reader/readBool.html new file mode 100644 index 0000000..3c41190 --- /dev/null +++ b/docs/v0.2/ion/Reader/readBool.html @@ -0,0 +1,163 @@ + + + + + + Reader::readBool - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::readBool()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readDecimal.html b/docs/v0.2/ion/Reader/readDecimal.html new file mode 100644 index 0000000..f0c42c9 --- /dev/null +++ b/docs/v0.2/ion/Reader/readDecimal.html @@ -0,0 +1,163 @@ + + + + + + Reader::readDecimal - + mdref + + + + + + + + + + +
+ + +

+ion\Decimal ion\Reader::readDecimal()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readFloat.html b/docs/v0.2/ion/Reader/readFloat.html new file mode 100644 index 0000000..0f66407 --- /dev/null +++ b/docs/v0.2/ion/Reader/readFloat.html @@ -0,0 +1,163 @@ + + + + + + Reader::readFloat - + mdref + + + + + + + + + + +
+ + +

+float ion\Reader::readFloat()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readInt.html b/docs/v0.2/ion/Reader/readInt.html new file mode 100644 index 0000000..f949574 --- /dev/null +++ b/docs/v0.2/ion/Reader/readInt.html @@ -0,0 +1,163 @@ + + + + + + Reader::readInt - + mdref + + + + + + + + + + +
+ + +

+string|int ion\Reader::readInt()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readLob.html b/docs/v0.2/ion/Reader/readLob.html new file mode 100644 index 0000000..7c4e5d8 --- /dev/null +++ b/docs/v0.2/ion/Reader/readLob.html @@ -0,0 +1,163 @@ + + + + + + Reader::readLob - + mdref + + + + + + + + + + +
+ + +

+string ion\Reader::readLob()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readLobPart.html b/docs/v0.2/ion/Reader/readLobPart.html new file mode 100644 index 0000000..34c8a20 --- /dev/null +++ b/docs/v0.2/ion/Reader/readLobPart.html @@ -0,0 +1,170 @@ + + + + + + Reader::readLobPart - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::readLobPart( &$string, [int $length = 4096])

Params: +

    +
  • +

    Reference &$string

    +
  • +
  • +

    Optional int $length = 4096

    +
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readNull.html b/docs/v0.2/ion/Reader/readNull.html new file mode 100644 index 0000000..2069d0f --- /dev/null +++ b/docs/v0.2/ion/Reader/readNull.html @@ -0,0 +1,163 @@ + + + + + + Reader::readNull - + mdref + + + + + + + + + + +
+ + +

+ion\Type ion\Reader::readNull()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readString.html b/docs/v0.2/ion/Reader/readString.html new file mode 100644 index 0000000..8bcac5e --- /dev/null +++ b/docs/v0.2/ion/Reader/readString.html @@ -0,0 +1,163 @@ + + + + + + Reader::readString - + mdref + + + + + + + + + + +
+ + +

+string ion\Reader::readString()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readStringPart.html b/docs/v0.2/ion/Reader/readStringPart.html new file mode 100644 index 0000000..69aaac9 --- /dev/null +++ b/docs/v0.2/ion/Reader/readStringPart.html @@ -0,0 +1,170 @@ + + + + + + Reader::readStringPart - + mdref + + + + + + + + + + +
+ + +

+bool ion\Reader::readStringPart( &$string, [int $length = 4096])

Params: +

    +
  • +

    Reference &$string

    +
  • +
  • +

    Optional int $length = 4096

    +
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readSymbol.html b/docs/v0.2/ion/Reader/readSymbol.html new file mode 100644 index 0000000..1e8fe25 --- /dev/null +++ b/docs/v0.2/ion/Reader/readSymbol.html @@ -0,0 +1,163 @@ + + + + + + Reader::readSymbol - + mdref + + + + + + + + + + +
+ + +

+ion\Symbol ion\Reader::readSymbol()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/readTimestamp.html b/docs/v0.2/ion/Reader/readTimestamp.html new file mode 100644 index 0000000..f9ba482 --- /dev/null +++ b/docs/v0.2/ion/Reader/readTimestamp.html @@ -0,0 +1,163 @@ + + + + + + Reader::readTimestamp - + mdref + + + + + + + + + + +
+ + +

+ion\Timestamp ion\Reader::readTimestamp()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Reader/seek.html b/docs/v0.2/ion/Reader/seek.html new file mode 100644 index 0000000..9757b71 --- /dev/null +++ b/docs/v0.2/ion/Reader/seek.html @@ -0,0 +1,168 @@ + + + + + + Reader::seek - + mdref + + + + + + + + + + +
+ + +

+void ion\Reader::seek(int $offset, [int $length = -1])

Params: +

    +
  • +int $offset +
  • +
  • Optional int $length = -1
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Serializer.html b/docs/v0.2/ion/Serializer.html new file mode 100644 index 0000000..abe77de --- /dev/null +++ b/docs/v0.2/ion/Serializer.html @@ -0,0 +1,162 @@ + + + + + + Serializer - + mdref + + + + + + + + + + +
+ + +

+interface ion\Serializer +

Serializer interface, used to customize ion\serialize()'s behavior.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Serializer/Serializer.html b/docs/v0.2/ion/Serializer/Serializer.html new file mode 100644 index 0000000..6d02469 --- /dev/null +++ b/docs/v0.2/ion/Serializer/Serializer.html @@ -0,0 +1,136 @@ + + + + + + Serializer - + mdref + + + + + + + + + + +
+ + +

+class ion\Serializer\Serializer
 implements ion\Serializer +

Serializer implementation

Constants: +

None.

Properties: +

    +
  • +public bool $multiSequence = false
    +Whether to write the top level array as multiple ION sequences.
  • +
  • +public bool $callMagicSerialize = true
    +Whether to call magic __serialize() methods on objects to serialize.
  • +
  • +public ?string $callCustomSerialize = NULL
    +Whether and which custom serialize method to call on objects to serialize.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Serializer/Serializer/__construct.html b/docs/v0.2/ion/Serializer/Serializer/__construct.html new file mode 100644 index 0000000..d8c6dbb --- /dev/null +++ b/docs/v0.2/ion/Serializer/Serializer/__construct.html @@ -0,0 +1,118 @@ + + + + + + Serializer::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Serializer\Serializer::__construct([bool $multiSequence = false, [bool $callMagicSerialize = true, [?string $callCustomSerialize = NULL]]])

Create a new ION serializer.

Params: +

    +
  • Optional bool $multiSequence = false
    +Whether to write the top level array as multiple ION sequences.
  • +
  • Optional bool $callMagicSerialize = true
    +Whether to call magic __serialize() methods on objects to serialize.
  • +
  • Optional ?string $callCustomSerialize = NULL
    +Whether and which custom serialize method to call on objects to serialize.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Serializer/serialize.html b/docs/v0.2/ion/Serializer/serialize.html new file mode 100644 index 0000000..56d9e41 --- /dev/null +++ b/docs/v0.2/ion/Serializer/serialize.html @@ -0,0 +1,109 @@ + + + + + + Serializer::serialize - + mdref + + + + + + + + + + +
+ + +

+mixed ion\Serializer::serialize(mixed $data, [ion\Writer|array|null $writer = NULL])

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol.html b/docs/v0.2/ion/Symbol.html new file mode 100644 index 0000000..af30b08 --- /dev/null +++ b/docs/v0.2/ion/Symbol.html @@ -0,0 +1,266 @@ + + + + + + Symbol - + mdref + + + + + + + + + + +
+ + +

+class ion\Symbol
 implements Stringable +

See also ION spec's symbol definition, and ION spec's symbol guide.

Constants: +

None.

Properties: +

    +
  • +public ?string $value = NULL
    +The symbol's text representation.
  • +
  • +public int $sid = -1
    +The symbols ID, referencing its location within a shared symbol table.
  • +
  • +public ?ion\Symbol\ImportLocation $importLocation = NULL
    +The import location referencing a shared symbol table.
  • +

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Enum.html b/docs/v0.2/ion/Symbol/Enum.html new file mode 100644 index 0000000..6c5d7d4 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Enum.html @@ -0,0 +1,163 @@ + + + + + + Enum - + mdref + + + + + + + + + + +
+ + +

+interface ion\Symbol\Enum +

Base interface of built-in shared symbol tables.

Constants: +

None.

Properties: +

None.

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Enum/toSID.html b/docs/v0.2/ion/Symbol/Enum/toSID.html new file mode 100644 index 0000000..8e6e7cf --- /dev/null +++ b/docs/v0.2/ion/Symbol/Enum/toSID.html @@ -0,0 +1,119 @@ + + + + + + Enum::toSID - + mdref + + + + + + + + + + +
+ + +

+int ion\Symbol\Enum::toSID()

Params: +

None.

Returns: +

    +
  • +int, The symbol id.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Enum/toString.html b/docs/v0.2/ion/Symbol/Enum/toString.html new file mode 100644 index 0000000..ec64dec --- /dev/null +++ b/docs/v0.2/ion/Symbol/Enum/toString.html @@ -0,0 +1,119 @@ + + + + + + Enum::toString - + mdref + + + + + + + + + + +
+ + +

+string ion\Symbol\Enum::toString()

Params: +

None.

Returns: +

    +
  • +string, The symbol's textual representation.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Enum/toSymbol.html b/docs/v0.2/ion/Symbol/Enum/toSymbol.html new file mode 100644 index 0000000..f1ef72f --- /dev/null +++ b/docs/v0.2/ion/Symbol/Enum/toSymbol.html @@ -0,0 +1,119 @@ + + + + + + Enum::toSymbol - + mdref + + + + + + + + + + +
+ + +

+ion\Symbol ion\Symbol\Enum::toSymbol()

Params: +

None.

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/ImportLocation.html b/docs/v0.2/ion/Symbol/ImportLocation.html new file mode 100644 index 0000000..cb8dc08 --- /dev/null +++ b/docs/v0.2/ion/Symbol/ImportLocation.html @@ -0,0 +1,145 @@ + + + + + + ImportLocation - + mdref + + + + + + + + + + +
+ + +

+class ion\Symbol\ImportLocation +

The import location (referring to a shared table) of a symbol.

Constants: +

None.

Properties: +

    +
  • +public string $name
    +The name of the shared symbol table.
  • +
  • +public int $location
    +The location (sid) of the symbol within the table.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/ImportLocation/__construct.html b/docs/v0.2/ion/Symbol/ImportLocation/__construct.html new file mode 100644 index 0000000..8c02a7b --- /dev/null +++ b/docs/v0.2/ion/Symbol/ImportLocation/__construct.html @@ -0,0 +1,118 @@ + + + + + + ImportLocation::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Symbol\ImportLocation::__construct(string $name, int $location)

Create a new import location.

Params: +

    +
  • +string $name
    +The name of the shared symbol table.
  • +
  • +int $location
    +The location (sid) of the symbol within the table.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/PHP.html b/docs/v0.2/ion/Symbol/PHP.html new file mode 100644 index 0000000..e3df9df --- /dev/null +++ b/docs/v0.2/ion/Symbol/PHP.html @@ -0,0 +1,176 @@ + + + + + + PHP - + mdref + + + + + + + + + + +
+ + +

+enum ion\Symbol\PHP
 implements BackedEnum, ion\Symbol\Enum +

The built-in PHP symbols.

Constants: +

    +
  • +PHP = 'PHP' +
  • +
  • +Reference = 'R' +
  • +
  • +Backref = 'r' +
  • +
  • +Property = 'p' +
  • +
  • +Object = 'o' +
  • +
  • +ClassObject = 'c' +
  • +
  • +MagicObject = 'O' +
  • +
  • +CustomObject = 'C' +
  • +
  • +Enum = 'E' +
  • +
  • +Serializable = 'S' +
  • +

Properties: +

    +
  • +public string $name
    +The built-in PHP symbols.
  • +
  • +public string $value
    +The built-in PHP symbols.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/PHP/asTable.html b/docs/v0.2/ion/Symbol/PHP/asTable.html new file mode 100644 index 0000000..7aea4c0 --- /dev/null +++ b/docs/v0.2/ion/Symbol/PHP/asTable.html @@ -0,0 +1,114 @@ + + + + + + PHP::asTable - + mdref + + + + + + + + + + +
+ + +

+static ion\Symbol\Table\Shared ion\Symbol\PHP::asTable()

Get the built-in PHP shared symbol table.

Params: +

None.

Returns: +

    +
  • \Table\Shared, The builtin PHP shared symbol table.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/System.html b/docs/v0.2/ion/Symbol/System.html new file mode 100644 index 0000000..2d98cb6 --- /dev/null +++ b/docs/v0.2/ion/Symbol/System.html @@ -0,0 +1,173 @@ + + + + + + System - + mdref + + + + + + + + + + +
+ + +

+enum ion\Symbol\System
 implements BackedEnum, ion\Symbol\Enum +

The built-in ION system symbols.

Constants: +

    +
  • +Ion = '$ion' +
  • +
  • +Ivm_1_0 = '$ion_1_0' +
  • +
  • +IonSymbolTable = '$ion_symbol_table' +
  • +
  • +Name = 'name' +
  • +
  • +Version = 'version' +
  • +
  • +Imports = 'imports' +
  • +
  • +Symbols = 'symbols' +
  • +
  • +MaxId = 'max_id' +
  • +
  • +SharedSymbolTable = '$ion_shared_symbol_table' +
  • +

Properties: +

    +
  • +public string $name
    +The built-in ION system symbols.
  • +
  • +public string $value
    +The built-in ION system symbols.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/System/asTable.html b/docs/v0.2/ion/Symbol/System/asTable.html new file mode 100644 index 0000000..ebe3891 --- /dev/null +++ b/docs/v0.2/ion/Symbol/System/asTable.html @@ -0,0 +1,114 @@ + + + + + + System::asTable - + mdref + + + + + + + + + + +
+ + +

+static ion\Symbol\Table\Shared ion\Symbol\System::asTable()

Get the built-in ION system shared symbol table.

Params: +

None.

Returns: +

    +
  • \Table\Shared, The system symbol table.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table.html b/docs/v0.2/ion/Symbol/Table.html new file mode 100644 index 0000000..62ab00f --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table.html @@ -0,0 +1,211 @@ + + + + + + Table - + mdref + + + + + + + + + + +
+ + +

+interface ion\Symbol\Table +

Base interface of an ION symbol table.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/Local.html b/docs/v0.2/ion/Symbol/Table/Local.html new file mode 100644 index 0000000..8f89956 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/Local.html @@ -0,0 +1,167 @@ + + + + + + Local - + mdref + + + + + + + + + + +
+ + +

+class ion\Symbol\Table\Local
 implements ion\Symbol\Table +

A local symbol table.

See also the ION spec's symbol guide, and the ION doc's cookbook.

Constants: +

None.

Properties: +

    +
  • +private array $imports = array ( +)
    +Internal cache.
  • +
  • +private array $symbols = array ( +)
    +Internal cache.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/Local/__construct.html b/docs/v0.2/ion/Symbol/Table/Local/__construct.html new file mode 100644 index 0000000..7a80895 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/Local/__construct.html @@ -0,0 +1,123 @@ + + + + + + Local::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Symbol\Table\Local::__construct()

Create a local symbol table.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/Local/import.html b/docs/v0.2/ion/Symbol/Table/Local/import.html new file mode 100644 index 0000000..140dfcb --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/Local/import.html @@ -0,0 +1,131 @@ + + + + + + Local::import - + mdref + + + + + + + + + + +
+ + +

+void ion\Symbol\Table\Local::import(ion\Symbol\Table $table)

Import a symbol table.

Params: +

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/Shared.html b/docs/v0.2/ion/Symbol/Table/Shared.html new file mode 100644 index 0000000..b2e452b --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/Shared.html @@ -0,0 +1,155 @@ + + + + + + Shared - + mdref + + + + + + + + + + +
+ + +

+class ion\Symbol\Table\Shared
 implements ion\Symbol\Table +

A shared symbol table.

See also the ION spec's symbol guide, and the ION doc's cookbook.

Constants: +

None.

Properties: +

    +
  • +public string $name
    +The name of the shared symbol table.
  • +
  • +public int $version = 1
    +The version of the shared symbol table.
  • +
  • +private array $symbols = array ( +)
    +Internal cache.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/Shared/__construct.html b/docs/v0.2/ion/Symbol/Table/Shared/__construct.html new file mode 100644 index 0000000..f2b8750 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/Shared/__construct.html @@ -0,0 +1,129 @@ + + + + + + Shared::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Symbol\Table\Shared::__construct(string $name, [int $version = 1, [?array $symbols = NULL]])

Create a shared symbol table.

Params: +

    +
  • +string $name
    +The name of the shared symbol table.
  • +
  • Optional int $version = 1
    +The version of the shared symbol table.
  • +
  • Optional ?array $symbols = NULL
    +Internal cache.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/add.html b/docs/v0.2/ion/Symbol/Table/add.html new file mode 100644 index 0000000..df110dd --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/add.html @@ -0,0 +1,129 @@ + + + + + + Table::add - + mdref + + + + + + + + + + +
+ + +

+int ion\Symbol\Table::add(ion\Symbol|string $symbol)

Add a symbol to the table.

Params: +

Returns: +

    +
  • +int, The symbol ID.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/find.html b/docs/v0.2/ion/Symbol/Table/find.html new file mode 100644 index 0000000..7b16c87 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/find.html @@ -0,0 +1,129 @@ + + + + + + Table::find - + mdref + + + + + + + + + + +
+ + +

+?ion\Symbol ion\Symbol\Table::find(string|int $id)

Find a symbol within the symbol table, including imports.

Params: +

    +
  • +string|int $id
    +The ID or text of the symbol to find.
  • +

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/findLocal.html b/docs/v0.2/ion/Symbol/Table/findLocal.html new file mode 100644 index 0000000..da45152 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/findLocal.html @@ -0,0 +1,129 @@ + + + + + + Table::findLocal - + mdref + + + + + + + + + + +
+ + +

+?ion\Symbol ion\Symbol\Table::findLocal(string|int $id)

Find a symbol within only this symbol table, ignoring imports.

Params: +

    +
  • +string|int $id
    +The ID or text of the symbol to find.
  • +

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/Table/getMaxId.html b/docs/v0.2/ion/Symbol/Table/getMaxId.html new file mode 100644 index 0000000..f894c71 --- /dev/null +++ b/docs/v0.2/ion/Symbol/Table/getMaxId.html @@ -0,0 +1,125 @@ + + + + + + Table::getMaxId - + mdref + + + + + + + + + + +
+ + +

+int ion\Symbol\Table::getMaxId()

Get the maximum symbol ID within the symbol table.

Params: +

None.

Returns: +

    +
  • +int, The maximum symbol ID.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/__construct.html b/docs/v0.2/ion/Symbol/__construct.html new file mode 100644 index 0000000..d648579 --- /dev/null +++ b/docs/v0.2/ion/Symbol/__construct.html @@ -0,0 +1,122 @@ + + + + + + Symbol::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Symbol::__construct([?string $value = NULL, [int $sid = -1, [?ion\Symbol\ImportLocation $importLocation = NULL]]])

Create an ION symbol.

Params: +

    +
  • Optional ?string $value = NULL
    +The symbol's text representation.
  • +
  • Optional int $sid = -1
    +The symbols ID, referencing its location within a shared symbol table.
  • +
  • Optional ?ion\Symbol\ImportLocation $importLocation = NULL
    +The import location referencing a shared symbol table.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/equals.html b/docs/v0.2/ion/Symbol/equals.html new file mode 100644 index 0000000..13f2e85 --- /dev/null +++ b/docs/v0.2/ion/Symbol/equals.html @@ -0,0 +1,129 @@ + + + + + + Symbol::equals - + mdref + + + + + + + + + + +
+ + +

+bool ion\Symbol::equals(ion\Symbol $symbol)

Compare two symbols for equality.

Two symbols are considered equal, if either:

    +
  • both are the same object or NULL +
  • +
  • both values are NULL (unknown text), and both $importLocations match
  • +
  • both values match, regardless of $sid and $importLocation +
  • +

Params: +

Returns: +

    +
  • +bool, whether the two Symbols equal
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Symbol/toString.html b/docs/v0.2/ion/Symbol/toString.html new file mode 100644 index 0000000..9364704 --- /dev/null +++ b/docs/v0.2/ion/Symbol/toString.html @@ -0,0 +1,115 @@ + + + + + + Symbol::toString - + mdref + + + + + + + + + + +
+ + +

+string ion\Symbol::toString()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Timestamp.html b/docs/v0.2/ion/Timestamp.html new file mode 100644 index 0000000..6442a1e --- /dev/null +++ b/docs/v0.2/ion/Timestamp.html @@ -0,0 +1,184 @@ + + + + + + Timestamp - + mdref + + + + + + + + + + +
+ + +

+class ion\Timestamp
 extends DateTime
 implements DateTimeInterface, Stringable +

An ION Timestamp.

See also the ION spec's timestamp definition, and PHP's date documentation.

Constants: +

None.

Properties: +

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Timestamp/Format.html b/docs/v0.2/ion/Timestamp/Format.html new file mode 100644 index 0000000..b627a7a --- /dev/null +++ b/docs/v0.2/ion/Timestamp/Format.html @@ -0,0 +1,142 @@ + + + + + + Format - + mdref + + + + + + + + + + +
+ + +

+enum ion\Timestamp\Format
 implements BackedEnum +

Timestamp format.

Constants: +

    +
  • +Year = 'Y\T' +
  • +
  • +Month = 'Y-m\T' +
  • +
  • +Day = 'Y-m-d\T' +
  • +
  • +Min = 'Y-m-d\TH:i' +
  • +
  • +Sec = 'Y-m-d\TH:i:s' +
  • +
  • +Frac = 'Y-m-d\TH:i:s.v' +
  • +
  • +MinTZ = 'Y-m-d\TH:iP' +
  • +
  • +SecTZ = 'Y-m-d\TH:i:sP' +
  • +
  • +FracTZ = 'Y-m-d\TH:i:s.vP' +
  • +

Properties: +

    +
  • +public string $name
    +Timestamp format.
  • +
  • +public string $value
    +Timestamp format.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Timestamp/Precision.html b/docs/v0.2/ion/Timestamp/Precision.html new file mode 100644 index 0000000..3c035d5 --- /dev/null +++ b/docs/v0.2/ion/Timestamp/Precision.html @@ -0,0 +1,142 @@ + + + + + + Precision - + mdref + + + + + + + + + + +
+ + +

+enum ion\Timestamp\Precision
 implements BackedEnum +

Timestamp precision.

Constants: +

    +
  • +Year = 1 +
  • +
  • +Month = 3 +
  • +
  • +Day = 7 +
  • +
  • +Min = 23 +
  • +
  • +Sec = 55 +
  • +
  • +Frac = 119 +
  • +
  • +MinTZ = 151 +
  • +
  • +SecTZ = 183 +
  • +
  • +FracTZ = 247 +
  • +

Properties: +

    +
  • +public string $name
    +Timestamp precision.
  • +
  • +public int $value
    +Timestamp precision.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Timestamp/__construct.html b/docs/v0.2/ion/Timestamp/__construct.html new file mode 100644 index 0000000..63fac24 --- /dev/null +++ b/docs/v0.2/ion/Timestamp/__construct.html @@ -0,0 +1,115 @@ + + + + + + Timestamp::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Timestamp::__construct(ion\Timestamp\Precision|int $precision, [ion\Timestamp\Format|string|null $format = NULL, [?string $datetime = NULL, [DateTimeZone|string|null $timezone = NULL]]])

Create a new ION timestamp.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Type.html b/docs/v0.2/ion/Type.html new file mode 100644 index 0000000..73494f7 --- /dev/null +++ b/docs/v0.2/ion/Type.html @@ -0,0 +1,186 @@ + + + + + + Type - + mdref + + + + + + + + + + +
+ + +

+enum ion\Type
 implements BackedEnum +

ION data type.

The following special PHP classes are provided for some data types:

Constants: +

    +
  • +Null = 0 +
  • +
  • +Bool = 256 +
  • +
  • +Int = 512 +
  • +
  • +Float = 1024 +
  • +
  • +Decimal = 1280 +
  • +
  • +Timestamp = 1536 +
  • +
  • +Symbol = 1792 +
  • +
  • +String = 2048 +
  • +
  • +CLob = 2304 +
  • +
  • +BLob = 2560 +
  • +
  • +List = 2816 +
  • +
  • +SExp = 3072 +
  • +
  • +Struct = 3328 +
  • +
  • +Datagram = 3840 +
  • +
  • +EOF = -256 +
  • +
  • +NONE = -512 +
  • +

Properties: +

    +
  • +public string $name
    +ION data type.
  • +
  • +public int $value
    +ION data type.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Unserializer.html b/docs/v0.2/ion/Unserializer.html new file mode 100644 index 0000000..b876161 --- /dev/null +++ b/docs/v0.2/ion/Unserializer.html @@ -0,0 +1,162 @@ + + + + + + Unserializer - + mdref + + + + + + + + + + +
+ + +

+interface ion\Unserializer +

Unserializer interface, used to customize ion\unserialize()'s behavior.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Unserializer/Unserializer.html b/docs/v0.2/ion/Unserializer/Unserializer.html new file mode 100644 index 0000000..e89492d --- /dev/null +++ b/docs/v0.2/ion/Unserializer/Unserializer.html @@ -0,0 +1,136 @@ + + + + + + Unserializer - + mdref + + + + + + + + + + +
+ + +

+class ion\Unserializer\Unserializer
 implements ion\Unserializer +

Unserializer implementation

Constants: +

None.

Properties: +

    +
  • +public bool $multiSequence = false
    +Whether to continue reading multiple ION sequences after the first one.
  • +
  • +public bool $callMagicUnserialize = true
    +Whether to call magic __unserialize() methods on objects to unserialize.
  • +
  • +public ?string $callCustomUnserialize = NULL
    +Whether and which custom unserialize method to call on objects to unserialize.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Unserializer/Unserializer/__construct.html b/docs/v0.2/ion/Unserializer/Unserializer/__construct.html new file mode 100644 index 0000000..cde68de --- /dev/null +++ b/docs/v0.2/ion/Unserializer/Unserializer/__construct.html @@ -0,0 +1,118 @@ + + + + + + Unserializer::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Unserializer\Unserializer::__construct([bool $multiSequence = false, [bool $callMagicUnserialize = true, [?string $callCustomUnserialize = NULL]]])

Create a new ION unserializer.

Params: +

    +
  • Optional bool $multiSequence = false
    +Whether to continue reading multiple ION sequences after the first one.
  • +
  • Optional bool $callMagicUnserialize = true
    +Whether to call magic __unserialize() methods on objects to unserialize.
  • +
  • Optional ?string $callCustomUnserialize = NULL
    +Whether and which custom unserialize method to call on objects to unserialize.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Unserializer/unserialize.html b/docs/v0.2/ion/Unserializer/unserialize.html new file mode 100644 index 0000000..16674c1 --- /dev/null +++ b/docs/v0.2/ion/Unserializer/unserialize.html @@ -0,0 +1,107 @@ + + + + + + Unserializer::unserialize - + mdref + + + + + + + + + + +
+ + +

+mixed ion\Unserializer::unserialize(\Reader|string|resource $data)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer.html b/docs/v0.2/ion/Writer.html new file mode 100644 index 0000000..6c8e617 --- /dev/null +++ b/docs/v0.2/ion/Writer.html @@ -0,0 +1,478 @@ + + + + + + Writer - + mdref + + + + + + + + + + +
+ + +

+interface ion\Writer +

ION writer API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Buffer.html b/docs/v0.2/ion/Writer/Buffer.html new file mode 100644 index 0000000..fef5925 --- /dev/null +++ b/docs/v0.2/ion/Writer/Buffer.html @@ -0,0 +1,203 @@ + + + + + + Buffer - + mdref + + + + + + + + + + +
+ + +

+interface ion\Writer\Buffer
 implements ion\Writer +

ION buffer writer API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Buffer/Writer.html b/docs/v0.2/ion/Writer/Buffer/Writer.html new file mode 100644 index 0000000..c1aefcc --- /dev/null +++ b/docs/v0.2/ion/Writer/Buffer/Writer.html @@ -0,0 +1,138 @@ + + + + + + Writer - + mdref + + + + + + + + + + +
+ + +

+class ion\Writer\Buffer\Writer
 extends ion\Writer\Writer
 implements ion\Writer\Buffer +

ION buffer writer.

Constants: +

None.

Properties: +

None.

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Buffer/Writer/__construct.html b/docs/v0.2/ion/Writer/Buffer/Writer/__construct.html new file mode 100644 index 0000000..5e9631b --- /dev/null +++ b/docs/v0.2/ion/Writer/Buffer/Writer/__construct.html @@ -0,0 +1,124 @@ + + + + + + Writer::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Buffer\Writer::__construct([ion\Writer\Options|array|null $options = NULL])

Create a new buffer writer.

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Buffer/getBuffer.html b/docs/v0.2/ion/Writer/Buffer/getBuffer.html new file mode 100644 index 0000000..b7b328d --- /dev/null +++ b/docs/v0.2/ion/Writer/Buffer/getBuffer.html @@ -0,0 +1,115 @@ + + + + + + Buffer::getBuffer - + mdref + + + + + + + + + + +
+ + +

+string ion\Writer\Buffer::getBuffer()

Get the buffer written to.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Buffer/resetBuffer.html b/docs/v0.2/ion/Writer/Buffer/resetBuffer.html new file mode 100644 index 0000000..a2558f0 --- /dev/null +++ b/docs/v0.2/ion/Writer/Buffer/resetBuffer.html @@ -0,0 +1,115 @@ + + + + + + Buffer::resetBuffer - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Buffer::resetBuffer()

Reset the buffer written to.

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Options.html b/docs/v0.2/ion/Writer/Options.html new file mode 100644 index 0000000..e08d098 --- /dev/null +++ b/docs/v0.2/ion/Writer/Options.html @@ -0,0 +1,209 @@ + + + + + + Options - + mdref + + + + + + + + + + +
+ + +

+class ion\Writer\Options +

ION writer options.

Constants: +

None.

Properties: +

    +
  • +public ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • +public ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • +public bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • +public bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • +public bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • +public bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • +public bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • +public int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • +public bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • +public int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • +public int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • +public int $tempBufferSize = 16384
    +Temporary buffer size.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Options/__construct.html b/docs/v0.2/ion/Writer/Options/__construct.html new file mode 100644 index 0000000..5fc708b --- /dev/null +++ b/docs/v0.2/ion/Writer/Options/__construct.html @@ -0,0 +1,136 @@ + + + + + + Options::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Options::__construct([?ion\Catalog $catalog = NULL, [?ion\Decimal\Context $decimalContext = NULL, [bool $outputBinary = false, [bool $compactFloats = false, [bool $escapeNonAscii = false, [bool $prettyPrint = false, [bool $indentTabs = true, [int $indentSize = 2, [bool $flushEveryValue = false, [int $maxContainerDepth = 10, [int $maxAnnotations = 10, [int $tempBufferSize = 16384]]]]]]]]]]]])

Create custom ION writer options.

Params: +

    +
  • Optional ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • Optional ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • Optional bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • Optional bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • Optional bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • Optional bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • Optional bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • Optional int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • Optional bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • Optional int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • Optional int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • Optional int $tempBufferSize = 16384
    +Temporary buffer size.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Stream.html b/docs/v0.2/ion/Writer/Stream.html new file mode 100644 index 0000000..677b694 --- /dev/null +++ b/docs/v0.2/ion/Writer/Stream.html @@ -0,0 +1,189 @@ + + + + + + Stream - + mdref + + + + + + + + + + +
+ + +

+interface ion\Writer\Stream
 implements ion\Writer +

ION stream writer API.

Constants: +

None.

Properties: +

None.

Functions: +

Namespaces, Interfaces and Classes: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Stream/Writer.html b/docs/v0.2/ion/Writer/Stream/Writer.html new file mode 100644 index 0000000..a547b1a --- /dev/null +++ b/docs/v0.2/ion/Writer/Stream/Writer.html @@ -0,0 +1,173 @@ + + + + + + Writer - + mdref + + + + + + + + + + +
+ + +

+class ion\Writer\Stream\Writer
 extends ion\Writer\Writer
 implements ion\Writer\Stream +

ION stream writer.

Constants: +

None.

Properties: +

    +
  • +public ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • +public ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • +public bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • +public bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • +public bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • +public bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • +public bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • +public int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • +public bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • +public int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • +public int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • +public int $tempBufferSize = 16384
    +Temporary buffer size.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Stream/Writer/__construct.html b/docs/v0.2/ion/Writer/Stream/Writer/__construct.html new file mode 100644 index 0000000..2e60676 --- /dev/null +++ b/docs/v0.2/ion/Writer/Stream/Writer/__construct.html @@ -0,0 +1,149 @@ + + + + + + Writer::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Stream\Writer::__construct(resource $stream, [?ion\Catalog $catalog = NULL, [?ion\Decimal\Context $decimalContext = NULL, [bool $outputBinary = false, [bool $compactFloats = false, [bool $escapeNonAscii = false, [bool $prettyPrint = false, [bool $indentTabs = true, [int $indentSize = 2, [bool $flushEveryValue = false, [int $maxContainerDepth = 10, [int $maxAnnotations = 10, [int $tempBufferSize = 16384]]]]]]]]]]]])

Create a new stream writer.

Params: +

    +
  • +resource $stream
    +The stream to write to.
  • +
  • Optional ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • Optional ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • Optional bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • Optional bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • Optional bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • Optional bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • Optional bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • Optional int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • Optional bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • Optional int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • Optional int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • Optional int $tempBufferSize = 16384
    +Temporary buffer size.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Stream/getStream.html b/docs/v0.2/ion/Writer/Stream/getStream.html new file mode 100644 index 0000000..0a36f0e --- /dev/null +++ b/docs/v0.2/ion/Writer/Stream/getStream.html @@ -0,0 +1,117 @@ + + + + + + Stream::getStream - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Stream::getStream()

Get the stream being written to.

Params: +

None.

Returns: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Writer.html b/docs/v0.2/ion/Writer/Writer.html new file mode 100644 index 0000000..f7ee1c5 --- /dev/null +++ b/docs/v0.2/ion/Writer/Writer.html @@ -0,0 +1,209 @@ + + + + + + Writer - + mdref + + + + + + + + + + +
+ + +

+abstract class ion\Writer\Writer
 implements ion\Writer +

Base implementation of common functionality of ION writers.

Constants: +

None.

Properties: +

    +
  • +public ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • +public ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • +public bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • +public bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • +public bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • +public bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • +public bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • +public int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • +public bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • +public int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • +public int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • +public int $tempBufferSize = 16384
    +Temporary buffer size.
  • +

Functions: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/Writer/__construct.html b/docs/v0.2/ion/Writer/Writer/__construct.html new file mode 100644 index 0000000..c4b4073 --- /dev/null +++ b/docs/v0.2/ion/Writer/Writer/__construct.html @@ -0,0 +1,136 @@ + + + + + + Writer::__construct - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer\Writer::__construct([?ion\Catalog $catalog = NULL, [?ion\Decimal\Context $decimalContext = NULL, [bool $outputBinary = false, [bool $compactFloats = false, [bool $escapeNonAscii = false, [bool $prettyPrint = false, [bool $indentTabs = true, [int $indentSize = 2, [bool $flushEveryValue = false, [int $maxContainerDepth = 10, [int $maxAnnotations = 10, [int $tempBufferSize = 16384]]]]]]]]]]]])

Create custom ION writer.

Params: +

    +
  • Optional ?ion\Catalog $catalog = NULL
    +ION catalog to use for symbol lookup.
  • +
  • Optional ?ion\Decimal\Context $decimalContext = NULL
    +Decimal context to use.
  • +
  • Optional bool $outputBinary = false
    +Whether to output binary ION.
  • +
  • Optional bool $compactFloats = false
    +Whether to write doubles which fit in 32 bits as floats.
  • +
  • Optional bool $escapeNonAscii = false
    +Whether to slash-escape all non ASCII bytes.
  • +
  • Optional bool $prettyPrint = false
    +Whether to produce pretty-printed output.
  • +
  • Optional bool $indentTabs = true
    +Whether to indent with tabs, when pretty-printing.
  • +
  • Optional int $indentSize = 2
    +The number of spaces to use for indentation instead of tabs, when pretty-printing.
  • +
  • Optional bool $flushEveryValue = false
    +Whether to immediately flush every value written.
  • +
  • Optional int $maxContainerDepth = 10
    +Maximum depth of nested containers.
  • +
  • Optional int $maxAnnotations = 10
    +The maximum number of annotations allowed on a single value.
  • +
  • Optional int $tempBufferSize = 16384
    +Temporary buffer size.
  • +
+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/appendLob.html b/docs/v0.2/ion/Writer/appendLob.html new file mode 100644 index 0000000..07cbb75 --- /dev/null +++ b/docs/v0.2/ion/Writer/appendLob.html @@ -0,0 +1,153 @@ + + + + + + Writer::appendLob - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::appendLob(string $data)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/finish.html b/docs/v0.2/ion/Writer/finish.html new file mode 100644 index 0000000..9a8a432 --- /dev/null +++ b/docs/v0.2/ion/Writer/finish.html @@ -0,0 +1,149 @@ + + + + + + Writer::finish - + mdref + + + + + + + + + + +
+ + +

+int ion\Writer::finish()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/finishContainer.html b/docs/v0.2/ion/Writer/finishContainer.html new file mode 100644 index 0000000..a31f301 --- /dev/null +++ b/docs/v0.2/ion/Writer/finishContainer.html @@ -0,0 +1,149 @@ + + + + + + Writer::finishContainer - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::finishContainer()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/finishLob.html b/docs/v0.2/ion/Writer/finishLob.html new file mode 100644 index 0000000..63bec9f --- /dev/null +++ b/docs/v0.2/ion/Writer/finishLob.html @@ -0,0 +1,149 @@ + + + + + + Writer::finishLob - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::finishLob()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/flush.html b/docs/v0.2/ion/Writer/flush.html new file mode 100644 index 0000000..5ce6fc0 --- /dev/null +++ b/docs/v0.2/ion/Writer/flush.html @@ -0,0 +1,149 @@ + + + + + + Writer::flush - + mdref + + + + + + + + + + +
+ + +

+int ion\Writer::flush()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/getDepth.html b/docs/v0.2/ion/Writer/getDepth.html new file mode 100644 index 0000000..893a393 --- /dev/null +++ b/docs/v0.2/ion/Writer/getDepth.html @@ -0,0 +1,149 @@ + + + + + + Writer::getDepth - + mdref + + + + + + + + + + +
+ + +

+int ion\Writer::getDepth()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/startContainer.html b/docs/v0.2/ion/Writer/startContainer.html new file mode 100644 index 0000000..033343e --- /dev/null +++ b/docs/v0.2/ion/Writer/startContainer.html @@ -0,0 +1,153 @@ + + + + + + Writer::startContainer - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::startContainer(ion\Type $type)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/startLob.html b/docs/v0.2/ion/Writer/startLob.html new file mode 100644 index 0000000..900c9d4 --- /dev/null +++ b/docs/v0.2/ion/Writer/startLob.html @@ -0,0 +1,153 @@ + + + + + + Writer::startLob - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::startLob(ion\Type $type)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeAnnotation.html b/docs/v0.2/ion/Writer/writeAnnotation.html new file mode 100644 index 0000000..1d630d0 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeAnnotation.html @@ -0,0 +1,152 @@ + + + + + + Writer::writeAnnotation - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeAnnotation([ion\Symbol|string ?>...$annotation])

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeBLob.html b/docs/v0.2/ion/Writer/writeBLob.html new file mode 100644 index 0000000..7d33bcd --- /dev/null +++ b/docs/v0.2/ion/Writer/writeBLob.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeBLob - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeBLob(string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeBool.html b/docs/v0.2/ion/Writer/writeBool.html new file mode 100644 index 0000000..c4f1555 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeBool.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeBool - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeBool(bool $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeCLob.html b/docs/v0.2/ion/Writer/writeCLob.html new file mode 100644 index 0000000..1d3abd6 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeCLob.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeCLob - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeCLob(string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeDecimal.html b/docs/v0.2/ion/Writer/writeDecimal.html new file mode 100644 index 0000000..cb4ab24 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeDecimal.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeDecimal - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeDecimal(ion\Decimal|string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeFieldName.html b/docs/v0.2/ion/Writer/writeFieldName.html new file mode 100644 index 0000000..6130651 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeFieldName.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeFieldName - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeFieldName(string $name)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeFloat.html b/docs/v0.2/ion/Writer/writeFloat.html new file mode 100644 index 0000000..4433129 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeFloat.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeFloat - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeFloat(float $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeInt.html b/docs/v0.2/ion/Writer/writeInt.html new file mode 100644 index 0000000..6499263 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeInt.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeInt - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeInt(string|int $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeNull.html b/docs/v0.2/ion/Writer/writeNull.html new file mode 100644 index 0000000..b00aeac --- /dev/null +++ b/docs/v0.2/ion/Writer/writeNull.html @@ -0,0 +1,149 @@ + + + + + + Writer::writeNull - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeNull()

Params: +

None.

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeString.html b/docs/v0.2/ion/Writer/writeString.html new file mode 100644 index 0000000..e8112c1 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeString.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeString - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeString(string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeSymbol.html b/docs/v0.2/ion/Writer/writeSymbol.html new file mode 100644 index 0000000..8d3a457 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeSymbol.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeSymbol - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeSymbol(ion\Symbol|string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeTimestamp.html b/docs/v0.2/ion/Writer/writeTimestamp.html new file mode 100644 index 0000000..be7bdf3 --- /dev/null +++ b/docs/v0.2/ion/Writer/writeTimestamp.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeTimestamp - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeTimestamp(ion\Timestamp|string $value)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/Writer/writeTypedNull.html b/docs/v0.2/ion/Writer/writeTypedNull.html new file mode 100644 index 0000000..ecdd60d --- /dev/null +++ b/docs/v0.2/ion/Writer/writeTypedNull.html @@ -0,0 +1,153 @@ + + + + + + Writer::writeTypedNull - + mdref + + + + + + + + + + +
+ + +

+void ion\Writer::writeTypedNull(ion\Type $type)

Params: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/serialize.html b/docs/v0.2/ion/serialize.html new file mode 100644 index 0000000..6acd3e3 --- /dev/null +++ b/docs/v0.2/ion/serialize.html @@ -0,0 +1,145 @@ + + + + + + serialize - + mdref + + + + + + + + + + +
+ + +

+string ion\serialize(mixed $data, [ion\Serializer|array|null $serializer = NULL])

Serialize a PHP value as ION data.

Serializes supported PHP values with the optionally provided \ion\Serializer:

Params: +

Returns: +

    +
  • +string, serialized ION data
  • +

Throws: +

+
+ + + + +
+ + + + + +
+ + diff --git a/docs/v0.2/ion/unserialize.html b/docs/v0.2/ion/unserialize.html new file mode 100644 index 0000000..df1456b --- /dev/null +++ b/docs/v0.2/ion/unserialize.html @@ -0,0 +1,136 @@ + + + + + + unserialize - + mdref + + + + + + + + + + +
+ + +

+mixed ion\unserialize(string|resource $data, [ion\Unserializer|array|null $unserializer = NULL])

Unserialize ION data (stream) as PHP value(s).

Params: +

Returns: +

    +
  • +mixed, unserialized PHP values
  • +

Throws: +

+
+ + + + +
+ + + + + +
+ + diff --git a/package.xml b/package.xml index c3dc79d..5976a68 100644 --- a/package.xml +++ b/package.xml @@ -78,7 +78,6 @@ https://awesomized.github.io/ext-ion/ - @@ -96,6 +95,9 @@ https://awesomized.github.io/ext-ion/ + + + @@ -123,7 +125,10 @@ https://awesomized.github.io/ext-ion/ - + + + +