Chris@0: Dot Access Data Chris@0: =============== Chris@0: Chris@0: Given a deep data structure, access data by dot notation. Chris@0: Chris@0: Chris@0: Requirements Chris@0: ------------ Chris@0: Chris@0: * PHP (5.3+) Chris@0: Chris@0: Chris@0: Usage Chris@0: ----- Chris@0: Chris@0: Abstract example: Chris@0: Chris@0: ```php Chris@0: use Dflydev\DotAccessData\Data; Chris@0: Chris@0: $data = new Data; Chris@0: Chris@0: $data->set('a.b.c', 'C'); Chris@0: $data->set('a.b.d', 'D1'); Chris@0: $data->append('a.b.d', 'D2'); Chris@0: $data->set('a.b.e', array('E0', 'E1', 'E2')); Chris@0: Chris@0: // C Chris@0: $data->get('a.b.c'); Chris@0: Chris@0: // array('D1', 'D2') Chris@0: $data->get('a.b.d'); Chris@0: Chris@0: // array('E0', 'E1', 'E2') Chris@0: $data->get('a.b.e'); Chris@0: Chris@0: // true Chris@0: $data->has('a.b.c'); Chris@0: Chris@0: // false Chris@0: $data->has('a.b.d.j'); Chris@0: ``` Chris@0: Chris@0: A more concrete example: Chris@0: Chris@0: ```php Chris@0: use Dflydev\DotAccessData\Data; Chris@0: Chris@0: $data = new Data(array( Chris@0: 'hosts' => array( Chris@0: 'hewey' => array( Chris@0: 'username' => 'hman', Chris@0: 'password' => 'HPASS', Chris@0: 'roles' => array('web'), Chris@0: ), Chris@0: 'dewey' => array( Chris@0: 'username' => 'dman', Chris@0: 'password' => 'D---S', Chris@0: 'roles' => array('web', 'db'), Chris@0: 'nick' => 'dewey dman' Chris@0: ), Chris@0: 'lewey' => array( Chris@0: 'username' => 'lman', Chris@0: 'password' => 'LP@$$', Chris@0: 'roles' => array('db'), Chris@0: ), Chris@0: ) Chris@0: )); Chris@0: Chris@0: // hman Chris@0: $username = $data->get('hosts.hewey.username'); Chris@0: // HPASS Chris@0: $password = $data->get('hosts.hewey.password'); Chris@0: // array('web') Chris@0: $roles = $data->get('hosts.hewey.roles'); Chris@0: // dewey dman Chris@0: $nick = $data->get('hosts.dewey.nick'); Chris@0: // Unknown Chris@0: $nick = $data->get('hosts.lewey.nick', 'Unknown'); Chris@0: Chris@0: // DataInterface instance Chris@0: $dewey = $data->getData('hosts.dewey'); Chris@0: // dman Chris@0: $username = $dewey->get('username'); Chris@0: // D---S Chris@0: $password = $dewey->get('password'); Chris@0: // array('web', 'db') Chris@0: $roles = $dewey->get('roles'); Chris@0: Chris@0: // No more lewey Chris@0: $data->remove('hosts.lewey'); Chris@0: Chris@0: // Add DB to hewey's roles Chris@0: $data->append('hosts.hewey.roles', 'db'); Chris@0: Chris@0: $data->set('hosts.april', array( Chris@0: 'username' => 'aman', Chris@0: 'password' => '@---S', Chris@0: 'roles' => array('web'), Chris@0: )); Chris@0: Chris@0: // Check if a key exists (true to this case) Chris@0: $hasKey = $data->has('hosts.dewey.username'); Chris@0: ``` Chris@0: Chris@0: Chris@0: License Chris@0: ------- Chris@0: Chris@0: This library is licensed under the New BSD License - see the LICENSE file Chris@0: for details. Chris@0: Chris@0: Chris@0: Community Chris@0: --------- Chris@0: Chris@0: If you have questions or want to help out, join us in the Chris@0: [#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net.