> Can you provide an use case and code example of how that would look?
Sure.
Here's how an ElasticSearch query currently looks in PHP:
$esQuery = new \StdClass;
$esQuery->query = new \StdClass;
$esQuery->query->term = new \StdClass;
$esQuery->query->term->name = 'beer';
$esQuery->size = 1;
// OR
$esQuery = (object)array(
"query" => (object)array(
"term" => (object)array(
"name" => "beer"
)
),
"size" => 1
);
…and here's how it could look with the proposed syntax:
<?php
$esQuery = {
"query" : {
"term" : {
"name": "beer"
}
},
"size" : 1
};
…and here's how I'd use curl to ensure that the query I'm issuing does in fact
work with ElasticSearch:
$ curl http://localhost:9200/gimmebar/assets/_search?pretty=1 -d'{
> "query" : {
> "term" : {
> "name": "beer"
> }
> },
> "size" : 1
> }'
Even considering the `(object)array(` syntax, it's much easier to work with an
external query (as shown with curl), if we have a (nearly) JSON-compatible
syntax in PHP.
Note that I *could* have written the PHP definition of $esQuery with the
proposed syntax and non-JSON compatible syntax (single quotes, for example),
but I chose to write it with double quotes because I knew I might also want to
pass it to curl.
Realistically, "beer" would be in a variable (maybe `{"term": {"name":
$term}}`), but replacing just the variables is certainly much easier than
translating the `new \StdClass` syntax.
The argument for right-hand-side assignments being allowed in the proposed
syntax (such as in `{'time': time()}`) is still valid because I expect this
syntax will be used both for interoperating with third party services (as
above), but also generally for object and array creation without a care about
third parties.
S
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php