mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
The official image from streamline does not currently work for the arm64 platform. As a temporary measure, the source code and docker build scripts have been lifted from the official images and are used to build locally. Some additional modifications are made to reduce overall image size, these are documented in docker/README.md
159 lines
3.8 KiB
Markdown
159 lines
3.8 KiB
Markdown
Dot Access Data
|
|
===============
|
|
|
|
[](https://packagist.org/packages/dflydev/dot-access-data)
|
|
[](https://packagist.org/packages/dflydev/dot-access-data)
|
|
[](LICENSE)
|
|
[](https://github.com/dflydev/dflydev-dot-access-data/actions?query=workflow%3ATests+branch%3Amain)
|
|
[](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data/code-structure/)
|
|
[](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data)
|
|
|
|
Given a deep data structure, access data by dot notation.
|
|
|
|
|
|
Requirements
|
|
------------
|
|
|
|
* PHP (7.1+)
|
|
|
|
> For PHP (5.3+) please refer to version `1.0`.
|
|
|
|
|
|
Usage
|
|
-----
|
|
|
|
Abstract example:
|
|
|
|
```php
|
|
use Dflydev\DotAccessData\Data;
|
|
|
|
$data = new Data;
|
|
|
|
$data->set('a.b.c', 'C');
|
|
$data->set('a.b.d', 'D1');
|
|
$data->append('a.b.d', 'D2');
|
|
$data->set('a.b.e', ['E0', 'E1', 'E2']);
|
|
|
|
// C
|
|
$data->get('a.b.c');
|
|
|
|
// ['D1', 'D2']
|
|
$data->get('a.b.d');
|
|
|
|
// ['E0', 'E1', 'E2']
|
|
$data->get('a.b.e');
|
|
|
|
// true
|
|
$data->has('a.b.c');
|
|
|
|
// false
|
|
$data->has('a.b.d.j');
|
|
|
|
|
|
// 'some-default-value'
|
|
$data->get('some.path.that.does.not.exist', 'some-default-value');
|
|
|
|
// throws a MissingPathException because no default was given
|
|
$data->get('some.path.that.does.not.exist');
|
|
```
|
|
|
|
A more concrete example:
|
|
|
|
```php
|
|
use Dflydev\DotAccessData\Data;
|
|
|
|
$data = new Data([
|
|
'hosts' => [
|
|
'hewey' => [
|
|
'username' => 'hman',
|
|
'password' => 'HPASS',
|
|
'roles' => ['web'],
|
|
],
|
|
'dewey' => [
|
|
'username' => 'dman',
|
|
'password' => 'D---S',
|
|
'roles' => ['web', 'db'],
|
|
'nick' => 'dewey dman',
|
|
],
|
|
'lewey' => [
|
|
'username' => 'lman',
|
|
'password' => 'LP@$$',
|
|
'roles' => ['db'],
|
|
],
|
|
],
|
|
]);
|
|
|
|
// hman
|
|
$username = $data->get('hosts.hewey.username');
|
|
// HPASS
|
|
$password = $data->get('hosts.hewey.password');
|
|
// ['web']
|
|
$roles = $data->get('hosts.hewey.roles');
|
|
// dewey dman
|
|
$nick = $data->get('hosts.dewey.nick');
|
|
// Unknown
|
|
$nick = $data->get('hosts.lewey.nick', 'Unknown');
|
|
|
|
// DataInterface instance
|
|
$dewey = $data->getData('hosts.dewey');
|
|
// dman
|
|
$username = $dewey->get('username');
|
|
// D---S
|
|
$password = $dewey->get('password');
|
|
// ['web', 'db']
|
|
$roles = $dewey->get('roles');
|
|
|
|
// No more lewey
|
|
$data->remove('hosts.lewey');
|
|
|
|
// Add DB to hewey's roles
|
|
$data->append('hosts.hewey.roles', 'db');
|
|
|
|
$data->set('hosts.april', [
|
|
'username' => 'aman',
|
|
'password' => '@---S',
|
|
'roles' => ['web'],
|
|
]);
|
|
|
|
// Check if a key exists (true to this case)
|
|
$hasKey = $data->has('hosts.dewey.username');
|
|
```
|
|
|
|
`Data` may be used as an array, since it implements `ArrayAccess` interface:
|
|
|
|
```php
|
|
// Get
|
|
$data->get('name') === $data['name']; // true
|
|
|
|
$data['name'] = 'Dewey';
|
|
// is equivalent to
|
|
$data->set($name, 'Dewey');
|
|
|
|
isset($data['name']) === $data->has('name');
|
|
|
|
// Remove key
|
|
unset($data['name']);
|
|
```
|
|
|
|
`/` can also be used as a path delimiter:
|
|
|
|
```php
|
|
$data->set('a/b/c', 'd');
|
|
echo $data->get('a/b/c'); // "d"
|
|
|
|
$data->get('a/b/c') === $data->get('a.b.c'); // true
|
|
```
|
|
|
|
License
|
|
-------
|
|
|
|
This library is licensed under the MIT License - see the LICENSE file
|
|
for details.
|
|
|
|
|
|
Community
|
|
---------
|
|
|
|
If you have questions or want to help out, join us in the
|
|
[#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.
|