annotate vendor/dflydev/dot-access-data/README.md @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 Dot Access Data
Chris@0 2 ===============
Chris@0 3
Chris@0 4 Given a deep data structure, access data by dot notation.
Chris@0 5
Chris@0 6
Chris@0 7 Requirements
Chris@0 8 ------------
Chris@0 9
Chris@0 10 * PHP (5.3+)
Chris@0 11
Chris@0 12
Chris@0 13 Usage
Chris@0 14 -----
Chris@0 15
Chris@0 16 Abstract example:
Chris@0 17
Chris@0 18 ```php
Chris@0 19 use Dflydev\DotAccessData\Data;
Chris@0 20
Chris@0 21 $data = new Data;
Chris@0 22
Chris@0 23 $data->set('a.b.c', 'C');
Chris@0 24 $data->set('a.b.d', 'D1');
Chris@0 25 $data->append('a.b.d', 'D2');
Chris@0 26 $data->set('a.b.e', array('E0', 'E1', 'E2'));
Chris@0 27
Chris@0 28 // C
Chris@0 29 $data->get('a.b.c');
Chris@0 30
Chris@0 31 // array('D1', 'D2')
Chris@0 32 $data->get('a.b.d');
Chris@0 33
Chris@0 34 // array('E0', 'E1', 'E2')
Chris@0 35 $data->get('a.b.e');
Chris@0 36
Chris@0 37 // true
Chris@0 38 $data->has('a.b.c');
Chris@0 39
Chris@0 40 // false
Chris@0 41 $data->has('a.b.d.j');
Chris@0 42 ```
Chris@0 43
Chris@0 44 A more concrete example:
Chris@0 45
Chris@0 46 ```php
Chris@0 47 use Dflydev\DotAccessData\Data;
Chris@0 48
Chris@0 49 $data = new Data(array(
Chris@0 50 'hosts' => array(
Chris@0 51 'hewey' => array(
Chris@0 52 'username' => 'hman',
Chris@0 53 'password' => 'HPASS',
Chris@0 54 'roles' => array('web'),
Chris@0 55 ),
Chris@0 56 'dewey' => array(
Chris@0 57 'username' => 'dman',
Chris@0 58 'password' => 'D---S',
Chris@0 59 'roles' => array('web', 'db'),
Chris@0 60 'nick' => 'dewey dman'
Chris@0 61 ),
Chris@0 62 'lewey' => array(
Chris@0 63 'username' => 'lman',
Chris@0 64 'password' => 'LP@$$',
Chris@0 65 'roles' => array('db'),
Chris@0 66 ),
Chris@0 67 )
Chris@0 68 ));
Chris@0 69
Chris@0 70 // hman
Chris@0 71 $username = $data->get('hosts.hewey.username');
Chris@0 72 // HPASS
Chris@0 73 $password = $data->get('hosts.hewey.password');
Chris@0 74 // array('web')
Chris@0 75 $roles = $data->get('hosts.hewey.roles');
Chris@0 76 // dewey dman
Chris@0 77 $nick = $data->get('hosts.dewey.nick');
Chris@0 78 // Unknown
Chris@0 79 $nick = $data->get('hosts.lewey.nick', 'Unknown');
Chris@0 80
Chris@0 81 // DataInterface instance
Chris@0 82 $dewey = $data->getData('hosts.dewey');
Chris@0 83 // dman
Chris@0 84 $username = $dewey->get('username');
Chris@0 85 // D---S
Chris@0 86 $password = $dewey->get('password');
Chris@0 87 // array('web', 'db')
Chris@0 88 $roles = $dewey->get('roles');
Chris@0 89
Chris@0 90 // No more lewey
Chris@0 91 $data->remove('hosts.lewey');
Chris@0 92
Chris@0 93 // Add DB to hewey's roles
Chris@0 94 $data->append('hosts.hewey.roles', 'db');
Chris@0 95
Chris@0 96 $data->set('hosts.april', array(
Chris@0 97 'username' => 'aman',
Chris@0 98 'password' => '@---S',
Chris@0 99 'roles' => array('web'),
Chris@0 100 ));
Chris@0 101
Chris@0 102 // Check if a key exists (true to this case)
Chris@0 103 $hasKey = $data->has('hosts.dewey.username');
Chris@0 104 ```
Chris@0 105
Chris@0 106
Chris@0 107 License
Chris@0 108 -------
Chris@0 109
Chris@0 110 This library is licensed under the New BSD License - see the LICENSE file
Chris@0 111 for details.
Chris@0 112
Chris@0 113
Chris@0 114 Community
Chris@0 115 ---------
Chris@0 116
Chris@0 117 If you have questions or want to help out, join us in the
Chris@0 118 [#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.