update 1.0.8.0
Commits for version update
This commit is contained in:
123
vendor/mtdowling/jmespath.php/README.rst
vendored
Normal file
123
vendor/mtdowling/jmespath.php/README.rst
vendored
Normal file
@@ -0,0 +1,123 @@
|
||||
============
|
||||
jmespath.php
|
||||
============
|
||||
|
||||
JMESPath (pronounced "jaymz path") allows you to declaratively specify how to
|
||||
extract elements from a JSON document. *jmespath.php* allows you to use
|
||||
JMESPath in PHP applications with PHP data structures. It requires PHP 5.4 or
|
||||
greater and can be installed through `Composer <http://getcomposer.org/doc/00-intro.md>`_
|
||||
using the ``mtdowling/jmespath.php`` package.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
$expression = 'foo.*.baz';
|
||||
|
||||
$data = [
|
||||
'foo' => [
|
||||
'bar' => ['baz' => 1],
|
||||
'bam' => ['baz' => 2],
|
||||
'boo' => ['baz' => 3]
|
||||
]
|
||||
];
|
||||
|
||||
JmesPath\search($expression, $data);
|
||||
// Returns: [1, 2, 3]
|
||||
|
||||
- `JMESPath Tutorial <http://jmespath.org/tutorial.html>`_
|
||||
- `JMESPath Grammar <http://jmespath.org/specification.html#grammar>`_
|
||||
- `JMESPath Python library <https://github.com/jmespath/jmespath.py>`_
|
||||
|
||||
PHP Usage
|
||||
=========
|
||||
|
||||
The ``JmesPath\search`` function can be used in most cases when using the
|
||||
library. This function utilizes a JMESPath runtime based on your environment.
|
||||
The runtime utilized can be configured using environment variables and may at
|
||||
some point in the future automatically utilize a C extension if available.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$result = JmesPath\search($expression, $data);
|
||||
|
||||
// or, if you require PSR-4 compliance.
|
||||
$result = JmesPath\Env::search($expression, $data);
|
||||
|
||||
Runtimes
|
||||
--------
|
||||
|
||||
jmespath.php utilizes *runtimes*. There are currently two runtimes:
|
||||
AstRuntime and CompilerRuntime.
|
||||
|
||||
AstRuntime is utilized by ``JmesPath\search()`` and ``JmesPath\Env::search()``
|
||||
by default.
|
||||
|
||||
AstRuntime
|
||||
~~~~~~~~~~
|
||||
|
||||
The AstRuntime will parse an expression, cache the resulting AST in memory,
|
||||
and interpret the AST using an external tree visitor. AstRuntime provides a
|
||||
good general approach for interpreting JMESPath expressions that have a low to
|
||||
moderate level of reuse.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
$runtime = new JmesPath\AstRuntime();
|
||||
$runtime('foo.bar', ['foo' => ['bar' => 'baz']]);
|
||||
// > 'baz'
|
||||
|
||||
CompilerRuntime
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
``JmesPath\CompilerRuntime`` provides the most performance for
|
||||
applications that have a moderate to high level of reuse of JMESPath
|
||||
expressions. The CompilerRuntime will walk a JMESPath AST and emit PHP source
|
||||
code, resulting in anywhere from 7x to 60x speed improvements.
|
||||
|
||||
Compiling JMESPath expressions to source code is a slower process than just
|
||||
walking and interpreting a JMESPath AST (via the AstRuntime). However,
|
||||
running the compiled JMESPath code results in much better performance than
|
||||
walking an AST. This essentially means that there is a warm-up period when
|
||||
using the ``CompilerRuntime``, but after the warm-up period, it will provide
|
||||
much better performance.
|
||||
|
||||
Use the CompilerRuntime if you know that you will be executing JMESPath
|
||||
expressions more than once or if you can pre-compile JMESPath expressions
|
||||
before executing them (for example, server-side applications).
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// Note: The cache directory argument is optional.
|
||||
$runtime = new JmesPath\CompilerRuntime('/path/to/compile/folder');
|
||||
$runtime('foo.bar', ['foo' => ['bar' => 'baz']]);
|
||||
// > 'baz'
|
||||
|
||||
Environment Variables
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You can utilize the CompilerRuntime in ``JmesPath\search()`` by setting
|
||||
the ``JP_PHP_COMPILE`` environment variable to "on" or to a directory
|
||||
on disk used to store cached expressions.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
A comprehensive list of test cases can be found at
|
||||
https://github.com/jmespath/jmespath.php/tree/master/tests/compliance.
|
||||
These compliance tests are utilized by jmespath.php to ensure consistency with
|
||||
other implementations, and can serve as examples of the language.
|
||||
|
||||
jmespath.php is tested using PHPUnit. In order to run the tests, you need to
|
||||
first install the dependencies using Composer as described in the *Installation*
|
||||
section. Next you just need to run the tests via make:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make test
|
||||
|
||||
You can run a suite of performance tests as well:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
make perf
|
Reference in New Issue
Block a user