annotate vendor/dflydev/dot-access-data/README.md @ 19:fa3358dc1485 tip

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