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