The idea behind this library is to allow the access through
`config.port` dot notation to object data.
My main problem was when accessing API data.
{
"hits":{
"products": [
{
"name": "Shoe"
}
]
}
}
Imagine this is the result from an API. Usually to be sure that the data is what I want I'm gonna need to do:
<?php
$result = r(); // imagine this is the result from an API with the json message abobe
if(is_object($result) && property_exists($result, 'hits')){
if(is_object($result->hits) && property_exists($result->hits, 'products')){
$whatiwant = $result->hits->products;
}
}
This is really time consuming. I just needed a way to do something like:
<?php
$d = \Alr\ObjectDotNotation\Data::load(r());
$whatiwant = $d->get('hits.products');
Note: In PHP7 you can just use $var = $something ?? $something2;
but if you need to do this dynamically it becomes harder to do.
Requires composer and PHP5.6+
$ composer require alrik11es/object-dot-notation
When the property is not found a null
will be returned.
Take this object as example:
{
"config": {
"port": "1234",
"url": "testurl.com"
}
}
Then:
<?php
$d = \Alr\ObjectDotNotation\Data::load($mixed);
echo $d->get('config.port'); // 1234
echo $d->{'config.port'};
echo $d->config; // ['port'=>1234 ...]
For other kind of uses you're gonna need to get a position of an array or search and get the first value of array.
Take this object as example:
{
"config": [{
"port": "80",
"url": "aurl.com"
},{
"port": "90",
"url": "burl.com"
}]
}
You can use this way to access the information:
<?php
$d = \Alr\ObjectDotNotation\Data::load($mixed);
echo $d->get('config[0].port'); // 80
echo $d->{'config[port=90|first].url'}; // burl.com
You can use filters for the array selection process.
[port=90|first]
IMPORTANT NOTE: Actually you can only use
|first
filter, use it always because it's going to be needed on future versions to avoid compatibility problems.
TODO